summaryrefslogtreecommitdiff
path: root/src/slices.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/slices.c')
-rwxr-xr-xsrc/slices.c25
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;
}