Fossil SCM

Removed the cleanup of g.zXYZ because there's simply too high of a chance that future changes would turn one of those free() calls into a double-free or passing an invalid pointer to free().

stephan 2019-12-20 15:41 memleak-fixes
Commit d60dd7afb02d16b6816bee67995c1bcd5d1e8c995d1a6bc419736fce90e25367
1 file changed -20
-20
--- src/main.c
+++ src/main.c
@@ -390,30 +390,10 @@
390390
memset(&g.json, 0, sizeof(g.json));
391391
#endif
392392
if(g.db){
393393
db_close(0);
394394
}
395
- fossil_free(g.ckinLockFail);
396
- fossil_free(g.zAuxSchema);
397
- fossil_free(g.zConfigDbName);
398
- fossil_free(g.zErrMsg);
399
- fossil_free(g.zHttpAuth);
400
- fossil_free(g.zIpAddr);
401
- fossil_free(g.zLocalDbName);
402
- fossil_free(g.zLocalRoot);
403
- fossil_free(g.zNonce);
404
- fossil_free(g.zSshCmd);
405
-#define never_free(x)
406
- never_free(g.zTop/* sometimes part of another string */);
407
- never_free(g.zPath /* sometimes part of another string */);
408
- never_free(g.zBaseURL /* might be the same as g.zTop */);
409
- never_free(g.zRepositoryOption/* sometimes static */);
410
- never_free(g.zRepositoryName /* sometimes static */);
411
- never_free(g.zOpenRevision /* sometimes static */);
412
- never_free(g.zHttpsURL /* sometimes = g.zBaseUrl */);
413
- never_free(g.zExtra /* might be part of another string */);
414
-#undef never_free
415395
manifest_clear_cache();
416396
content_clear_cache(1);
417397
rebuild_clear_cache();
418398
if(fossilFreeAtExit.n>0){
419399
int i;
420400
--- src/main.c
+++ src/main.c
@@ -390,30 +390,10 @@
390 memset(&g.json, 0, sizeof(g.json));
391 #endif
392 if(g.db){
393 db_close(0);
394 }
395 fossil_free(g.ckinLockFail);
396 fossil_free(g.zAuxSchema);
397 fossil_free(g.zConfigDbName);
398 fossil_free(g.zErrMsg);
399 fossil_free(g.zHttpAuth);
400 fossil_free(g.zIpAddr);
401 fossil_free(g.zLocalDbName);
402 fossil_free(g.zLocalRoot);
403 fossil_free(g.zNonce);
404 fossil_free(g.zSshCmd);
405 #define never_free(x)
406 never_free(g.zTop/* sometimes part of another string */);
407 never_free(g.zPath /* sometimes part of another string */);
408 never_free(g.zBaseURL /* might be the same as g.zTop */);
409 never_free(g.zRepositoryOption/* sometimes static */);
410 never_free(g.zRepositoryName /* sometimes static */);
411 never_free(g.zOpenRevision /* sometimes static */);
412 never_free(g.zHttpsURL /* sometimes = g.zBaseUrl */);
413 never_free(g.zExtra /* might be part of another string */);
414 #undef never_free
415 manifest_clear_cache();
416 content_clear_cache(1);
417 rebuild_clear_cache();
418 if(fossilFreeAtExit.n>0){
419 int i;
420
--- src/main.c
+++ src/main.c
@@ -390,30 +390,10 @@
390 memset(&g.json, 0, sizeof(g.json));
391 #endif
392 if(g.db){
393 db_close(0);
394 }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
395 manifest_clear_cache();
396 content_clear_cache(1);
397 rebuild_clear_cache();
398 if(fossilFreeAtExit.n>0){
399 int i;
400

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button