Index: /issm/trunk/src/c/objects/Hook.cpp
===================================================================
--- /issm/trunk/src/c/objects/Hook.cpp	(revision 4209)
+++ /issm/trunk/src/c/objects/Hook.cpp	(revision 4210)
@@ -196,18 +196,27 @@
 	
 	/*allocate: */
-	if (num<0) ISSMERROR("cannot demarshall Hook as num<=0");
-	this->ids=(int*)xmalloc(num*sizeof(int));
-	this->offsets=(int*)xmalloc(num*sizeof(int));
-	
-	/*demarshall allocated ids and offsets: */
-	for (i=0;i<num;i++){
-		memcpy(&this->ids[i],marshalled_dataset,sizeof(int));marshalled_dataset+=sizeof(int);
-		memcpy(&this->offsets[i],marshalled_dataset,sizeof(int));marshalled_dataset+=sizeof(int);
-	}
-
-	/*nullify object pointers */
-	this->objects=(Object**)xmalloc(num*sizeof(Object*));
-	for (i=0;i<num;i++){
-		this->objects[i]=NULL;
+	if (num<0){
+		ISSMERROR("cannot demarshall Hook as num<=0");
+	}
+	else if (num==0){
+		this->ids=NULL;
+		this->offsets=NULL;
+		this->objects=NULL;
+	}
+	else{
+		this->ids=(int*)xmalloc(num*sizeof(int));
+		this->offsets=(int*)xmalloc(num*sizeof(int));
+
+		/*demarshall allocated ids and offsets: */
+		for (i=0;i<num;i++){
+			memcpy(&this->ids[i],marshalled_dataset,sizeof(int));marshalled_dataset+=sizeof(int);
+			memcpy(&this->offsets[i],marshalled_dataset,sizeof(int));marshalled_dataset+=sizeof(int);
+		}
+
+		/*nullify object pointers */
+		this->objects=(Object**)xmalloc(num*sizeof(Object*));
+		for (i=0;i<num;i++){
+			this->objects[i]=NULL;
+		}
 	}
 
