X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fglprint.c;h=e90c0e3d6eb6445ce88de453e88b615b6aba14c4;hb=17fa41a4dfef75ce671bf71306929d1f5b91025a;hp=9721463eff76a4f552f954886553b4cf8f6c244c;hpb=3c32a221de1435ae7af8d96182560e8b28f1a4c0;p=gldbg.git diff --git a/source/glprint.c b/source/glprint.c index 9721463..e90c0e3 100644 --- a/source/glprint.c +++ b/source/glprint.c @@ -8,6 +8,7 @@ Distributed under the GPL #include #include #include +#include #include "arraysize.h" #include "enums.h" #include "glprint.h" @@ -23,6 +24,7 @@ typedef struct sGlPrintData static void init_print(GlDecoder *); static void glprint_free(void *); static void print_gldError(void *, GLenum); +static void print_unhandled(void *, unsigned short); GlDecoder *glprint_new(char *buffer, unsigned bufsize) { @@ -44,6 +46,7 @@ GlDecoder *glprint_new(char *buffer, unsigned bufsize) init_print(dec); dec->gldError = print_gldError; + dec->unhandled = print_unhandled; return dec; } @@ -73,6 +76,9 @@ static const char *print_array(const char *fmt, const void *data, unsigned elem_ char *ptr; unsigned i; + if(!data) + return "NULL"; + for(cptr=fmt; (type<2 && *cptr); ++cptr) { if(*cptr=='%') @@ -125,10 +131,16 @@ static const char *print_data(const void *data, unsigned size) } } -#include "glprint.funcs" +#include "gensrc/glprint.funcs" static void print_gldError(void *user_data, GLenum code) { GlPrintData *gpd = (GlPrintData *)user_data; snprintf(gpd->buffer, gpd->bufsize, "ERROR: %s", describe_enum(code, "ErrorCode")); } + +static void print_unhandled(void *user_data, unsigned short func) +{ + GlPrintData *gpd = (GlPrintData *)user_data; + gpd->buffer[0] = 0; +}