diff options
Diffstat (limited to 'src/slices.c')
-rwxr-xr-x | src/slices.c | 25 |
1 files changed, 20 insertions, 5 deletions
diff --git a/src/slices.c b/src/slices.c index 68e39f9..9f40b9e 100755 --- a/src/slices.c +++ b/src/slices.c @@ -75,14 +75,29 @@ int sliceSplit(slices_t *slices, slice_t *initialSlice, address_t splitAt, slice return 1 + (splitBeforeSingularity?1:0) + (splitAfterSingularity?1:0); } -slices_t *slicesNew() { +slices_t *slicesNewEmpty() { slices_t *ss = malloc(1*sizeof(slices_t)); - if (ss!=NULL) { - ss->count=0; - ss->first=NULL; - ss->last=NULL; + if (ss==NULL) { + return NULL; } + memset(ss, 0, sizeof(slices_t)); + return ss; +} + +slices_t *slicesNewSingleton(address_t begin, address_t end, sliceStatus_t status) { + slice_t *s=NULL; + slices_t *ss = slicesNewEmpty(); + if (ss==NULL) { + return NULL; + } + s=sliceNew(begin,end,status,NULL); + if (s==NULL) { + free(ss); + return NULL; + } + slicesAppend(ss,s); + return ss; } |