diff options
author | norly <ny-git@enpas.org> | 2013-06-20 19:02:44 +0100 |
---|---|---|
committer | norly <ny-git@enpas.org> | 2013-06-20 22:10:25 +0100 |
commit | 70b271e345debda7437c18f86c0f715a42a8267a (patch) | |
tree | 5bb5a22f1fff16036b4ba955e86dc5cc55e35245 /src/libelfu/modelops/clone.c | |
parent | b70b3ff9b1679bb1e0a215b7acd9b6d55497a46b (diff) |
Clean up code using ElfuScn
Diffstat (limited to 'src/libelfu/modelops/clone.c')
-rw-r--r-- | src/libelfu/modelops/clone.c | 18 |
1 files changed, 6 insertions, 12 deletions
diff --git a/src/libelfu/modelops/clone.c b/src/libelfu/modelops/clone.c index 8f92919..8b9b0bc 100644 --- a/src/libelfu/modelops/clone.c +++ b/src/libelfu/modelops/clone.c @@ -9,33 +9,27 @@ ElfuScn* elfu_mCloneScn(ElfuScn *ms) assert(ms); - newscn = malloc(sizeof(ElfuScn)); + newscn = elfu_mScnAlloc(); if (!newscn) { ELFU_WARN("elfu_nCloneScn: Could not allocate memory for new ElfuScn.\n"); return NULL; } newscn->shdr = ms->shdr; - newscn->data = ms->data; - if (ms->data.d_buf) { - void *newbuf = malloc(ms->data.d_size); + + if (ms->databuf) { + void *newbuf = malloc(ms->shdr.sh_size); if (!newbuf) { ELFU_WARN("elfu_nCloneScn: Could not allocate memory for new data buffer.\n"); free(newscn); return NULL; } - memcpy(newbuf, ms->data.d_buf, ms->data.d_size); - newscn->data.d_buf = newbuf; + memcpy(newbuf, ms->databuf, ms->shdr.sh_size); + newscn->databuf = newbuf; } - newscn->linkptr = NULL; - newscn->infoptr = NULL; - newscn->oldptr = ms; - CIRCLEQ_INIT(&ms->symtab.syms); - CIRCLEQ_INIT(&ms->reltab.rels); - return newscn; } |