make DEBUG_LEAKS safely free all resources before the main shell exits
This commit is contained in:
parent
ce1ab97541
commit
43a41932e7
6
Build.sh
6
Build.sh
@ -1,5 +1,5 @@
|
||||
#!/bin/sh
|
||||
srcversion='$MirOS: src/bin/mksh/Build.sh,v 1.613 2013/01/12 02:25:01 tg Exp $'
|
||||
srcversion='$MirOS: src/bin/mksh/Build.sh,v 1.614 2013/02/10 18:17:28 tg Exp $'
|
||||
#-
|
||||
# Copyright (c) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
|
||||
# 2011, 2012
|
||||
@ -1529,7 +1529,7 @@ else
|
||||
#define EXTERN
|
||||
#define MKSH_INCLUDES_ONLY
|
||||
#include "sh.h"
|
||||
__RCSID("$MirOS: src/bin/mksh/Build.sh,v 1.613 2013/01/12 02:25:01 tg Exp $");
|
||||
__RCSID("$MirOS: src/bin/mksh/Build.sh,v 1.614 2013/02/10 18:17:28 tg Exp $");
|
||||
int main(void) { printf("Hello, World!\n"); return (0); }
|
||||
EOF
|
||||
case $cm in
|
||||
@ -2380,6 +2380,8 @@ HAVE_STRING_H ac_header
|
||||
HAVE_CAN_FSTACKPROTECTORALL ac_flags
|
||||
|
||||
==== cpp definitions ====
|
||||
DEBUG enable debugging (want gcc), implies:
|
||||
DEBUG_LEAKS enable freeing resources before exiting
|
||||
MKSHRC_PATH "~/.mkshrc" (do not change)
|
||||
MKSH_A4PB force use of arc4random_pushb
|
||||
MKSH_ASSUME_UTF8 (0=disabled, 1=enabled; default: unset)
|
||||
|
11
main.c
11
main.c
@ -34,7 +34,7 @@
|
||||
#include <locale.h>
|
||||
#endif
|
||||
|
||||
__RCSID("$MirOS: src/bin/mksh/main.c,v 1.256 2013/02/10 17:55:57 tg Exp $");
|
||||
__RCSID("$MirOS: src/bin/mksh/main.c,v 1.257 2013/02/10 18:17:30 tg Exp $");
|
||||
|
||||
extern char **environ;
|
||||
|
||||
@ -971,6 +971,8 @@ quitenv(struct shf *shf)
|
||||
* Either main shell is exiting or cleanup_parents_env() was called.
|
||||
*/
|
||||
if (ep->oenv == NULL) {
|
||||
struct block *l;
|
||||
|
||||
if (ep->type == E_NONE) {
|
||||
/* Main shell exiting? */
|
||||
#if HAVE_PERSISTENT_HISTORY
|
||||
@ -997,6 +999,13 @@ quitenv(struct shf *shf)
|
||||
}
|
||||
if (shf)
|
||||
shf_close(shf);
|
||||
#ifdef DEBUG_LEAKS
|
||||
l = e->loc;
|
||||
while (l) {
|
||||
afreeall(&l->area);
|
||||
l = l->next;
|
||||
}
|
||||
#endif
|
||||
reclaim();
|
||||
#ifdef DEBUG_LEAKS
|
||||
#ifndef MKSH_NO_CMDLINE_EDITING
|
||||
|
Loading…
Reference in New Issue
Block a user