Index: /issm/trunk/src/c/objects/Elements/Penta.cpp
===================================================================
--- /issm/trunk/src/c/objects/Elements/Penta.cpp	(revision 4377)
+++ /issm/trunk/src/c/objects/Elements/Penta.cpp	(revision 4378)
@@ -1794,7 +1794,7 @@
 
 	/*recover nodes, matice and matpar: */
-	this->nodes=(Node**)this->hnodes[analysis_counter].deliverp();
-	this->matice=(Matice*)this->hmatice.delivers();
-	this->matpar=(Matpar*)this->hmatpar.delivers();
+	tria->nodes=(Node**)tria->hnodes[analysis_counter].deliverp();
+	tria->matice=(Matice*)tria->hmatice.delivers();
+	tria->matpar=(Matpar*)tria->hmatpar.delivers();
 	
 	return tria;
Index: /issm/trunk/src/c/objects/Elements/PentaHook.cpp
===================================================================
--- /issm/trunk/src/c/objects/Elements/PentaHook.cpp	(revision 4377)
+++ /issm/trunk/src/c/objects/Elements/PentaHook.cpp	(revision 4378)
@@ -72,9 +72,11 @@
 
 	for(i=0;i<this->numanalyses;i++){
+		/*Do not do anything if Hook is empty*/
+		if (this->hnodes[i].GetNum()==0) continue;
+		/*Else, spawn Hook*/
 		this->hnodes[i].Spawn(&triahook->hnodes[i],indices,3);
 	}
-	
-	this->hmatice.copy(&triahook->hmatice);
-	this->hmatpar.copy(&triahook->hmatpar);
+	triahook->hmatice.copy(&this->hmatice);
+	triahook->hmatpar.copy(&this->hmatpar);
 }
 /*}}}*/
Index: /issm/trunk/src/c/objects/Hook.cpp
===================================================================
--- /issm/trunk/src/c/objects/Hook.cpp	(revision 4377)
+++ /issm/trunk/src/c/objects/Hook.cpp	(revision 4378)
@@ -367,4 +367,13 @@
 	int i;
 
+	/*If this Hook is empty, simply return*/
+	if(this->num==0){
+		spawnedhook->num=0;
+		return;
+	}
+
+	/*Else, check that we are requesting a half of num*/
+	if (numindices>this->num) ISSMERROR("Cannot spawn hook with %i objects from a Hook of %i objects",numindices,this->num);
+
 	/*go pickup the correct objects, ids and offsets :*/
 	spawnedhook->num=numindices;
