view test/testtypes.c @ 940:bb1588ebe47b

Date: Sat, 10 Jul 2004 21:02:33 +0200 From: "Philippe Plantier (ayin)" Subject: [SDL] Problems allocating large surfaces There are problems when allocating large surfaces using SDL_CreateRGBSurface. When, for example, we try to allocate a surface wider than 16384 pixels, the calculation of the pitch overflows; this leads to a surface that has the w and h flags correctly set, but whose "pixels" buffer is too small. That may lead to heap corruption.
author Sam Lantinga <slouken@libsdl.org>
date Sat, 21 Aug 2004 05:29:45 +0000
parents 45b1c4303f87
children d93862a3d821
line wrap: on
line source


#include <stdio.h>
#include "SDL_main.h"
#include "SDL_types.h"

int main(int argc, char *argv[])
{
	int error = 0;
	int verbose = 1;

	if ( argv[1] && (strcmp(argv[1], "-q") == 0) )
		verbose = 0;

	if ( sizeof(Uint8) != 1 ) {
		if ( verbose )
			printf("sizeof(Uint8) != 1, instead = %d\n",
								sizeof(Uint8));
		++error;
	}
	if ( sizeof(Uint16) != 2 ) {
		if ( verbose )
			printf("sizeof(Uint16) != 2, instead = %d\n",
								sizeof(Uint16));
		++error;
	}
	if ( sizeof(Uint32) != 4 ) {
		if ( verbose )
			printf("sizeof(Uint32) != 4, instead = %d\n",
								sizeof(Uint32));
		++error;
	}
#ifdef SDL_HAS_64BIT_TYPE
	if ( sizeof(Uint64) != 8 ) {
		if ( verbose )
			printf("sizeof(Uint64) != 8, instead = %d\n",
								sizeof(Uint64));
		++error;
	}
#else
	if ( verbose ) {
		printf("WARNING: No 64-bit datatype on this platform\n");
	}
#endif
	if ( verbose && ! error )
		printf("All data types are the expected size.\n");

	return( error ? 1 : 0 );
}