mirror of
https://github.com/gbdev/rgbds.git
synced 2025-11-21 02:32:06 +00:00
Fix uninitialized memory use with -MT and -MQ
This didn't break unless the first uninitialized byte was non-zero, which happened to be the case on someone's Windows machine. Would it be worth it setting up Valgrind in CI?
This commit is contained in:
@@ -454,38 +454,43 @@ int main(int argc, char *argv[])
|
|||||||
|
|
||||||
/* Long-only options */
|
/* Long-only options */
|
||||||
case 0:
|
case 0:
|
||||||
if (depType) {
|
switch (depType) {
|
||||||
switch (depType) {
|
case 'G':
|
||||||
case 'G':
|
oGeneratedMissingIncludes = true;
|
||||||
oGeneratedMissingIncludes = true;
|
break;
|
||||||
break;
|
case 'P':
|
||||||
case 'P':
|
oGeneratePhonyDeps = true;
|
||||||
oGeneratePhonyDeps = true;
|
break;
|
||||||
break;
|
case 'Q':
|
||||||
case 'Q':
|
case 'T':
|
||||||
case 'T':
|
if (optind == argc)
|
||||||
if (optind == argc)
|
errx(1, "-M%c takes a target file name argument",
|
||||||
errx(1, "-M%c takes a target file name argument",
|
depType);
|
||||||
depType);
|
ep = optarg;
|
||||||
ep = optarg;
|
if (depType == 'Q')
|
||||||
if (depType == 'Q')
|
ep = make_escape(ep);
|
||||||
ep = make_escape(ep);
|
|
||||||
|
|
||||||
nTargetFileNameLen += strlen(ep) + 1;
|
nTargetFileNameLen += strlen(ep) + 1;
|
||||||
|
if (!tzTargetFileName) {
|
||||||
|
/* On first alloc, make an empty str */
|
||||||
|
tzTargetFileName =
|
||||||
|
malloc(nTargetFileNameLen + 1);
|
||||||
|
*tzTargetFileName = '\0';
|
||||||
|
} else {
|
||||||
tzTargetFileName =
|
tzTargetFileName =
|
||||||
realloc(tzTargetFileName,
|
realloc(tzTargetFileName,
|
||||||
nTargetFileNameLen + 1);
|
nTargetFileNameLen + 1);
|
||||||
if (tzTargetFileName == NULL)
|
|
||||||
err(1, "Cannot append new file to target file list");
|
|
||||||
strcat(tzTargetFileName, ep);
|
|
||||||
if (depType == 'Q')
|
|
||||||
free(ep);
|
|
||||||
char *ptr = tzTargetFileName +
|
|
||||||
strlen(tzTargetFileName);
|
|
||||||
*ptr++ = ' ';
|
|
||||||
*ptr = '\0';
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
if (tzTargetFileName == NULL)
|
||||||
|
err(1, "Cannot append new file to target file list");
|
||||||
|
strcat(tzTargetFileName, ep);
|
||||||
|
if (depType == 'Q')
|
||||||
|
free(ep);
|
||||||
|
char *ptr = tzTargetFileName +
|
||||||
|
strlen(tzTargetFileName);
|
||||||
|
*ptr++ = ' ';
|
||||||
|
*ptr = '\0';
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user