Browse Source

Fix off-by-one errors when converting const char[] to string.

The AbstractShaderProgramGLTest now passes again.
pull/87/merge
Vladimír Vondruš 11 years ago
parent
commit
0fcf763900
  1. 2
      src/Magnum/AbstractQuery.h
  2. 10
      src/Magnum/AbstractShaderProgram.h
  3. 2
      src/Magnum/AbstractTexture.h
  4. 2
      src/Magnum/Buffer.h
  5. 2
      src/Magnum/Framebuffer.h
  6. 2
      src/Magnum/Mesh.h
  7. 2
      src/Magnum/Renderbuffer.h
  8. 2
      src/Magnum/Shader.h

2
src/Magnum/AbstractQuery.h

@ -95,7 +95,7 @@ class MAGNUM_EXPORT AbstractQuery: public AbstractObject {
/** @overload */
template<std::size_t size> AbstractQuery& setLabel(const char(&label)[size]) {
return setLabelInternal(label);
return setLabelInternal({label, size - 1});
}
/**

10
src/Magnum/AbstractShaderProgram.h

@ -620,7 +620,7 @@ class MAGNUM_EXPORT AbstractShaderProgram: public AbstractObject {
/** @overload */
template<std::size_t size> AbstractShaderProgram& setLabel(const char (&label)[size]) {
return setLabelInternal(label);
return setLabelInternal({label, size - 1});
}
/**
@ -723,7 +723,7 @@ class MAGNUM_EXPORT AbstractShaderProgram: public AbstractObject {
/** @overload */
template<std::size_t size> void bindAttributeLocation(UnsignedInt location, const char(&name)[size]) {
bindAttributeLocationInternal(location, name);
bindAttributeLocationInternal(location, {name, size - 1});
}
#ifndef MAGNUM_TARGET_GLES
@ -751,7 +751,7 @@ class MAGNUM_EXPORT AbstractShaderProgram: public AbstractObject {
/** @overload */
template<std::size_t size> void bindFragmentDataLocationIndexed(UnsignedInt location, UnsignedInt index, const char(&name)[size]) {
bindFragmentDataLocationIndexedInternal(location, index, name);
bindFragmentDataLocationIndexedInternal(location, index, {name, size - 1});
}
/**
@ -778,7 +778,7 @@ class MAGNUM_EXPORT AbstractShaderProgram: public AbstractObject {
/** @overload */
template<std::size_t size> void bindFragmentDataLocation(UnsignedInt location, const char(&name)[size]) {
/* Not using const char* parameter, because this way it avoids most accidents with non-zero-terminated strings */
bindFragmentDataLocationInternal(location, name);
bindFragmentDataLocationInternal(location, {name, size - 1});
}
#endif
@ -841,7 +841,7 @@ class MAGNUM_EXPORT AbstractShaderProgram: public AbstractObject {
/** @overload */
template<std::size_t size> Int uniformLocation(const char(&name)[size]) {
return uniformLocationInternal(name);
return uniformLocationInternal({name, size - 1});
}
/**

2
src/Magnum/AbstractTexture.h

@ -289,7 +289,7 @@ class MAGNUM_EXPORT AbstractTexture: public AbstractObject {
/** @overload */
template<std::size_t size> AbstractTexture& setLabel(const char(&label)[size]) {
return setLabelInternal(label);
return setLabelInternal({label, size - 1});
}
/** @brief OpenGL texture ID */

2
src/Magnum/Buffer.h

@ -835,7 +835,7 @@ class MAGNUM_EXPORT Buffer: public AbstractObject {
/** @overload */
template<std::size_t size> Buffer& setLabel(const char(&label)[size]) {
return setLabelInternal(label);
return setLabelInternal({label, size - 1});
}
/** @brief Target hint */

2
src/Magnum/Framebuffer.h

@ -365,7 +365,7 @@ class MAGNUM_EXPORT Framebuffer: public AbstractFramebuffer, public AbstractObje
/** @overload */
template<std::size_t size> Framebuffer& setLabel(const char(&label)[size]) {
return setLabelInternal(label);
return setLabelInternal({label, size - 1});
}
/**

2
src/Magnum/Mesh.h

@ -492,7 +492,7 @@ class MAGNUM_EXPORT Mesh: public AbstractObject {
/** @overload */
template<std::size_t size> Mesh& setLabelInternal(const char(&label)[size]) {
return setLabelInternal(label);
return setLabelInternal({label, size - 1});
}
/**

2
src/Magnum/Renderbuffer.h

@ -147,7 +147,7 @@ class MAGNUM_EXPORT Renderbuffer: public AbstractObject {
/** @overload */
template<std::size_t size> Renderbuffer& setLabel(const char(&label)[size]) {
return setLabelInternal(label);
return setLabelInternal({label, size - 1});
}
/**

2
src/Magnum/Shader.h

@ -518,7 +518,7 @@ class MAGNUM_EXPORT Shader: public AbstractObject {
/** @overload */
template<std::size_t size> Shader& setLabel(const char(&label)[size]) {
return setLabelInternal(label);
return setLabelInternal({label, size - 1});
}
/** @brief Shader type */

Loading…
Cancel
Save