X-Git-Url: http://winboard.nl/cgi-bin?a=blobdiff_plain;f=winboard%2Fwinboard.c;h=b86a399157c479292af2011e14d8af2d2cc8cb90;hb=869f98444437c60d1178e217db0a45530e37b945;hp=b5ba50dfef714cbd5ea7caa56e21a4f869916264;hpb=bf3465a52edbeb1d394a4f3ffc766890c4a1aab5;p=xboard.git diff --git a/winboard/winboard.c b/winboard/winboard.c index b5ba50d..b86a399 100644 --- a/winboard/winboard.c +++ b/winboard/winboard.c @@ -5621,7 +5621,7 @@ MyLoadSound(MySound *ms) struct stat st; FILE *f; - if (ms->data) free(ms->data); + if (ms->data && ms->flag) free(ms->data); ms->data = NULL; switch (ms->name[0]) { @@ -5642,6 +5642,7 @@ MyLoadSound(MySound *ms) HANDLE h = FindResource(hInst, ms->name + 1, "WAVE"); if (h == NULL) break; ms->data = (void *)LoadResource(hInst, h); + ms->flag = 0; // not maloced, so cannot be freed! if (h == NULL) break; ok = TRUE; } @@ -5652,6 +5653,7 @@ MyLoadSound(MySound *ms) if (f == NULL) break; if (fstat(fileno(f), &st) < 0) break; ms->data = malloc(st.st_size); + ms->flag = 1; if (fread(ms->data, st.st_size, 1, f) < 1) break; fclose(f); ok = TRUE;