memory tracking fix
'heaputil' is producing a lot of complaints. This fixes one of them, about freeing memory that was never allocated. In this case, it's when removing an overview annotation for a level. The annotation is using dupstr_n() and not being recorded due to dupstr_n() being placed after MONITOR_HEAP undefines the macro that overrides alloc(). There's only one use of dupstr_n(), and its length checking isn't needed there, so just switch to dupstr() and comment out the implementation of dupstr_n(). I left the prototype in extern.h; that's harmless. If dupstr_n() needs to be resurrected, a second MONITOR_HEAP-aware version should be implemented, with corresponding macro to choose which one to use.
This commit is contained in:
@@ -246,6 +246,8 @@ dupstr(const char *string)
|
||||
return strcpy((char *) alloc(len + 1), string);
|
||||
}
|
||||
|
||||
#if 0 /* suppress this; if included, it will need a MONITOR_HEAP edition */
|
||||
|
||||
/* similar for reasonable size strings, but return length of input as well */
|
||||
char *
|
||||
dupstr_n(const char *string, unsigned int *lenout)
|
||||
@@ -257,7 +259,7 @@ dupstr_n(const char *string, unsigned int *lenout)
|
||||
*lenout = (unsigned int) len;
|
||||
return strcpy((char *) alloc(len + 1), string);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
/* cast to int or panic on overflow; use via macro */
|
||||
int
|
||||
|
||||
Reference in New Issue
Block a user