summaryrefslogtreecommitdiff
path: root/src/libelfu/modelops/clone.c
diff options
context:
space:
mode:
authornorly <ny-git@enpas.org>2013-06-20 19:02:44 +0100
committernorly <ny-git@enpas.org>2013-06-20 22:10:25 +0100
commit70b271e345debda7437c18f86c0f715a42a8267a (patch)
tree5bb5a22f1fff16036b4ba955e86dc5cc55e35245 /src/libelfu/modelops/clone.c
parentb70b3ff9b1679bb1e0a215b7acd9b6d55497a46b (diff)
Clean up code using ElfuScn
Diffstat (limited to 'src/libelfu/modelops/clone.c')
-rw-r--r--src/libelfu/modelops/clone.c18
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;
}