[Mesa-dev] [PATCH 2/4] mesa/image: assert on bad format
Brian Paul
brianp at vmware.com
Wed Oct 19 07:15:07 PDT 2011
On 10/19/2011 06:02 AM, nobled wrote:
> NULL as an error indicator is meaningless, since it will return NULL
> on success anyway if the caller passes in zero as the image's address
> and asks to calculate the offset of the first pixel. For example,
> _mesa_validate_pbo_access() does this.
>
> This also matches the code in the non-GL_BITMAP codepath, which
> already has an assert like this.
> ---
> src/mesa/main/image.c | 16 ++++++++--------
> 1 files changed, 8 insertions(+), 8 deletions(-)
>
> diff --git a/src/mesa/main/image.c b/src/mesa/main/image.c
> index ca5771c..3e0ca05 100644
> --- a/src/mesa/main/image.c
> +++ b/src/mesa/main/image.c
> @@ -1093,17 +1093,17 @@ _mesa_is_compressed_format(struct gl_context
> *ctx, GLenum format)
> * Pixel unpacking/packing parameters are observed according to \p packing.
> *
> * \param dimensions either 1, 2 or 3 to indicate dimensionality of image
> + * \param packing the pixelstore attributes
> * \param image starting address of image data
> * \param width the image width
> - * \param height theimage height
> - * \param format the pixel format
> - * \param type the pixel data type
> - * \param packing the pixelstore attributes
> + * \param height the image height
> + * \param format the pixel format (must be validated beforehand)
> + * \param type the pixel data type (must be validated beforehand)
> * \param img which image in the volume (0 for 1D or 2D images)
> * \param row row of pixel in the image (0 for 1D images)
> * \param column column of pixel in the image
> *
> - * \return address of pixel on success, or NULL on error.
> + * \return address of pixel.
> *
> * \sa gl_pixelstore_attrib.
> */
> @@ -1153,9 +1153,9 @@ _mesa_image_address( GLuint dimensions,
>
> /* Compute number of components per pixel */
> comp_per_pixel = _mesa_components_in_format( format );
> - if (comp_per_pixel< 0) {
> - return NULL;
> - }
> +
> + /* The pixel type and format should have been error checked earlier */
> + assert(comp_per_pixel> 0);
>
> bytes_per_row = alignment
> * CEILING( comp_per_pixel*pixels_per_row, 8*alignment );
>
For the GL_BITMAP case I think that we could just assert that
format==GL_COLOR_INDEX || format== G_STENCIL_INDEX.
-Brian
More information about the mesa-dev
mailing list