Index: /issm/trunk/src/c/objects/Elements/PentaHook.cpp
===================================================================
--- /issm/trunk/src/c/objects/Elements/PentaHook.cpp	(revision 4177)
+++ /issm/trunk/src/c/objects/Elements/PentaHook.cpp	(revision 4178)
@@ -33,6 +33,12 @@
 /*}}}*/
 /*FUNCTION PentaHook::InitHookNodes(int numanalyses){{{1*/
-void PentaHook::InitHookNodes(int numanalyses){
-	this->hnodes=(Hook*)xmalloc(numanalyses*sizeof(Hook));
+void PentaHook::InitHookNodes(int in_numanalyses){
+
+	ISSMASSERT(in_numanalyses);
+
+	this->numanalyses=in_numanalyses;
+	this->hnodes=(Hook*)xmalloc(in_numanalyses*sizeof(Hook));
+
+	for (int i=0;i<in_numanalyses;i++) this->hnodes[i].Init(NULL,0);
 }
 /*}}}*/
Index: /issm/trunk/src/c/objects/Elements/Tria.cpp
===================================================================
--- /issm/trunk/src/c/objects/Elements/Tria.cpp	(revision 4177)
+++ /issm/trunk/src/c/objects/Elements/Tria.cpp	(revision 4178)
@@ -55,5 +55,5 @@
 	tria_matpar_id=iomodel->numberofelements+1; //refers to the constant material parameters object
 
-	this->InitHookNodes(nummodels);this->nodes=NULL;
+	this->InitHookNodes(nummodels);      this->nodes=NULL;
 	this->InitHookMatice(tria_matice_id);this->matice=NULL;
 	this->InitHookMatpar(tria_matpar_id);this->matpar=NULL;
Index: /issm/trunk/src/c/objects/Elements/TriaHook.cpp
===================================================================
--- /issm/trunk/src/c/objects/Elements/TriaHook.cpp	(revision 4177)
+++ /issm/trunk/src/c/objects/Elements/TriaHook.cpp	(revision 4178)
@@ -34,6 +34,11 @@
 /*FUNCTION TriaHook::InitHookNodes(int numanalyses){{{1*/
 void TriaHook::InitHookNodes(int in_numanalyses){
+
+	ISSMASSERT(in_numanalyses);
+
 	this->numanalyses=in_numanalyses;
-	this->hnodes=(Hook*)xmalloc(numanalyses*sizeof(Hook));
+	this->hnodes=(Hook*)xmalloc(in_numanalyses*sizeof(Hook));
+
+	for (int i=0;i<in_numanalyses;i++) this->hnodes[i].Init(NULL,0);
 }
 /*}}}*/
Index: /issm/trunk/src/c/objects/Hook.cpp
===================================================================
--- /issm/trunk/src/c/objects/Hook.cpp	(revision 4177)
+++ /issm/trunk/src/c/objects/Hook.cpp	(revision 4178)
@@ -37,17 +37,29 @@
 void Hook::Init(int* in_ids, int in_num){
 
-	int i;
+	/*Intermediaries*/
+	int i;
+
+	/*Get number of objects to hook*/
 	this->num=in_num;
-	
-	/*Allocate: */
-	this->objects=(Object**)xmalloc(this->num*sizeof(Object*));
-	this->ids=(int*)xmalloc(this->num*sizeof(int));
-	this->offsets=(int*)xmalloc(this->num*sizeof(int));
-
-	/*Copy ids: */
-	for (i=0;i<this->num;i++){
-		this->ids[i]=in_ids[i];
-		this->objects[i]=NULL;
-		this->offsets[i]=0;
+
+	/*Get out if num=0*/
+	if (num==0){
+		/*Empty hook*/
+		this->ids=NULL;
+		this->objects=NULL;
+		this->offsets=NULL;
+	}
+	else{
+		/*Allocate: */
+		this->objects=(Object**)xmalloc(this->num*sizeof(Object*));
+		this->ids=(int*)xmalloc(this->num*sizeof(int));
+		this->offsets=(int*)xmalloc(this->num*sizeof(int));
+
+		/*Copy ids: */
+		for (i=0;i<this->num;i++){
+			this->ids[i]=in_ids[i];
+			this->objects[i]=NULL;
+			this->offsets[i]=0;
+		}
 	}
 }
@@ -213,4 +225,7 @@
 	Object* object=NULL;
 	int i;
+
+	/*Checks if debugging mode*/
+	ISSMASSERT(this->num==0 || this->ids!=NULL);
 
 	for(i=0;i<this->num;i++){
