From 32fb9b77db11ec82231e4cee45adf921ab9a332e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Deuc=D0=B5?= <shurd@sasktel.net> Date: Sun, 3 Nov 2024 14:07:48 -0500 Subject: [PATCH] More malloc() return checks --- src/uifc/uifc32.c | 42 ++++++++++++++++++++++-------------------- 1 file changed, 22 insertions(+), 20 deletions(-) diff --git a/src/uifc/uifc32.c b/src/uifc/uifc32.c index 782f27fa3d..8b1b3601fe 100644 --- a/src/uifc/uifc32.c +++ b/src/uifc/uifc32.c @@ -461,28 +461,30 @@ void docopy(void) case CIOLIB_BUTTON_1_DRAG_END: lines=abs(mevent.endy-mevent.starty)+1; copybuf=malloc(((endy-starty+1)*(endx-startx+1)+1+lines*2)*4); - outpos=0; - for(y=starty-1;y<endy;y++) { - for(x=startx-1;x<endx;x++) { - size_t outlen; - uint8_t *utf8str; - char ch; - - ch = screen->vmem[(y*api->scrn_width+x)].ch ? screen->vmem[(y*api->scrn_width+x)].ch : ' '; - utf8str = cp_to_utf8(conio_fontdata[screen->vmem[(y*api->scrn_width+x)].font].cp, &ch, 1, &outlen); - if (utf8str == NULL) - continue; - memcpy(copybuf + outpos, utf8str, outlen); - outpos += outlen; + if (copybuf) { + outpos=0; + for(y=starty-1;y<endy;y++) { + for(x=startx-1;x<endx;x++) { + size_t outlen; + uint8_t *utf8str; + char ch; + + ch = screen->vmem[(y*api->scrn_width+x)].ch ? screen->vmem[(y*api->scrn_width+x)].ch : ' '; + utf8str = cp_to_utf8(conio_fontdata[screen->vmem[(y*api->scrn_width+x)].font].cp, &ch, 1, &outlen); + if (utf8str == NULL) + continue; + memcpy(copybuf + outpos, utf8str, outlen); + outpos += outlen; + } + #ifdef _WIN32 + copybuf[outpos++]='\r'; + #endif + copybuf[outpos++]='\n'; } - #ifdef _WIN32 - copybuf[outpos++]='\r'; - #endif - copybuf[outpos++]='\n'; + copybuf[outpos]=0; + copytext(copybuf, strlen(copybuf)); + free(copybuf); } - copybuf[outpos]=0; - copytext(copybuf, strlen(copybuf)); - free(copybuf); restorescreen(screen); freescreen(screen); freescreen(sbuffer); -- GitLab