diff --git a/contrib/win32/win32compat/console.c b/contrib/win32/win32compat/console.c index d0c98f4..414b10b 100644 --- a/contrib/win32/win32compat/console.c +++ b/contrib/win32/win32compat/console.c @@ -1627,7 +1627,13 @@ SCREEN_HANDLE ConSaveScreenHandle( SCREEN_HANDLE hScreen ) } if ( !pScreenRec->pScreenBuf ) + { + // if we allocated a screen within this scope, free it before returning + if ( pScreenRec != (PSCREEN_RECORD)hScreen ) { + free(pScreenRec); + } return NULL; + } result = ReadConsoleOutput( hConsole, // handle of a console screen buffer (PCHAR_INFO)(pScreenRec->pScreenBuf), // address of buffer that receives data