From 5ed4e4ca50d968c2e868b0d676121058fae434d6 Mon Sep 17 00:00:00 2001 From: Jonathan Gray Date: Sat, 20 Apr 2013 22:41:21 +1000 Subject: [PATCH] avoid overflowing buffer with GL_EXTENSIONS, from ioquake3 --- code/renderer/tr_init.cpp | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/code/renderer/tr_init.cpp b/code/renderer/tr_init.cpp index 3e6644f..fbf0589 100644 --- a/code/renderer/tr_init.cpp +++ b/code/renderer/tr_init.cpp @@ -856,6 +856,27 @@ void GL_SetDefaultState( void ) #endif } +/* +================ +R_PrintLongString + +Workaround for VID_Printf's 4096 characters buffer limit. +================ +*/ +void R_PrintLongString(const char *string) { + char buffer[4096]; + const char *p; + int size = strlen(string); + + p = string; + while(size > 0) + { + Q_strncpyz(buffer, p, sizeof (buffer) ); + VID_Printf( PRINT_ALL, "%s", buffer ); + p += 4095; + size -= 4095; + } +} /* ================ @@ -888,7 +909,9 @@ void GfxInfo_f( void ) VID_Printf( PRINT_ALL, "\nGL_VENDOR: %s\n", glConfig.vendor_string ); VID_Printf( PRINT_ALL, "GL_RENDERER: %s\n", glConfig.renderer_string ); VID_Printf( PRINT_ALL, "GL_VERSION: %s\n", glConfig.version_string ); - VID_Printf( PRINT_ALL, "GL_EXTENSIONS: %s\n", glConfig.extensions_string ); + VID_Printf( PRINT_ALL, "GL_EXTENSIONS: " ); + R_PrintLongString( glConfig.extensions_string ); + VID_Printf( PRINT_ALL, "\n" ); VID_Printf( PRINT_ALL, "GL_MAX_TEXTURE_SIZE: %d\n", glConfig.maxTextureSize ); VID_Printf( PRINT_ALL, "GL_MAX_ACTIVE_TEXTURES_ARB: %d\n", glConfig.maxActiveTextures ); VID_Printf( PRINT_ALL, "\nPIXELFORMAT: color(%d-bits) Z(%d-bit) stencil(%d-bits)\n", glConfig.colorBits, glConfig.depthBits, glConfig.stencilBits );