scc

simple c99 compiler
git clone git://git.simple-cc.org/scc
Log | Files | Refs | Submodules | README | LICENSE

commit 559a18680dd0c9fbb7683dc57a3e93b6eff5fe12
parent 83313d4505acea160478ef7bf2c60645e3cec526
Author: Roberto E. Vargas Caballero <k0ga@shike2.com>
Date:   Fri, 23 Aug 2019 18:33:01 +0100

[libmach] Don't free obj in objdel()

This makes easier to use objdel for strip, because it doesn't
make sense to have relocation information in the generic part
when we do not have taget information.

Diffstat:
Msrc/libmach/coff32/coff32del.c | 1+
Msrc/libmach/coff32/coff32strip.c | 1+
Asrc/libmach/objdel.c | 18++++++++++++++++++
Dsrc/libmach/objfree.c | 15---------------
4 files changed, 20 insertions(+), 15 deletions(-)

diff --git a/src/libmach/coff32/coff32del.c b/src/libmach/coff32/coff32del.c @@ -20,4 +20,5 @@ coff32del(Obj *obj) obj->data = NULL; objdel(obj); + free(obj); } diff --git a/src/libmach/coff32/coff32strip.c b/src/libmach/coff32/coff32strip.c @@ -34,6 +34,7 @@ coff32strip(Obj *obj) coff->ents = NULL; coff->rels = NULL; coff->lines = NULL; + objdel(obj); return 0; } diff --git a/src/libmach/objdel.c b/src/libmach/objdel.c @@ -0,0 +1,18 @@ +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +#include <scc/mach.h> + +#include "libmach.h" + +void +objdel(Obj *obj) +{ + free(obj->secs); + free(obj->syms); + + obj->syms = NULL; + obj->secs = NULL; + memset(obj->htab, 0, sizeof(obj->htab)); +} diff --git a/src/libmach/objfree.c b/src/libmach/objfree.c @@ -1,15 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -#include <scc/mach.h> - -#include "libmach.h" - -void -objdel(Obj *obj) -{ - free(obj->secs); - free(obj->syms); - free(obj); -}