Index: trunk/Ohana/src/opihi/pcontrol/StackOps.c
===================================================================
--- trunk/Ohana/src/opihi/pcontrol/StackOps.c	(revision 10652)
+++ trunk/Ohana/src/opihi/pcontrol/StackOps.c	(revision 10656)
@@ -11,4 +11,14 @@
  */
 
+# define DEBUG 0
+
+void PrintStackInfo (Stack *stack, char *func) {
+
+  if (!DEBUG) return;
+  fprintf (stderr, "%s: %p  ", func, stack);
+  fprintf (stderr, "objects: %p  ", stack[0].object);
+  fprintf (stderr, "Nobjects: %d, NOBJECTS: %d\n", stack[0].Nobject, stack[0].NOBJECT);
+}
+
 /* allocate stack, setup with default values, allocate data */
 Stack *InitStack () {
@@ -39,4 +49,5 @@
   int i;
 
+  PrintStackInfo (stack, __func__);
   ASSERT (stack != NULL, "stack not set");
   LockStack (stack);
@@ -56,8 +67,12 @@
     stack[0].NOBJECT += 100;
     REALLOCATE (stack[0].object, void *, stack[0].NOBJECT);
+    REALLOCATE (stack[0].name,   char *, stack[0].NOBJECT);
+    REALLOCATE (stack[0].id,     int, stack[0].NOBJECT);
   }
 
   for (i = stack[0].Nobject; i > where; i--) {
     stack[0].object[i] = stack[0].object[i-1];
+    stack[0].name[i]   = stack[0].name[i-1];
+    stack[0].id[i]     = stack[0].id[i-1];
   }
   stack[0].object[where] = object;
@@ -75,4 +90,5 @@
   void *object;
   
+  PrintStackInfo (stack, __func__);
   ASSERT (stack != NULL, "stack not set");
   LockStack (stack);
@@ -100,4 +116,5 @@
   void *object;
 
+  PrintStackInfo (stack, __func__);
   ASSERT (stack != NULL, "stack not set");
   LockStack (stack);
@@ -122,4 +139,5 @@
   void *object;
   
+  PrintStackInfo (stack, __func__);
   ASSERT (stack != NULL, "stack not set");
   LockStack (stack);
@@ -143,4 +161,5 @@
   int i;
 
+  PrintStackInfo (stack, __func__);
   ASSERT (stack != NULL, "stack not set");
 
@@ -150,4 +169,5 @@
 
   /* shift the remaining entries by one */
+  /* XXX free associated memory */
   stack[0].Nobject --;
   for (i = where; i < stack[0].Nobject; i++) {
@@ -165,6 +185,6 @@
   void *object;
   
-  ASSERT (stack != NULL, "stack not set");
-
+  PrintStackInfo (stack, __func__);
+  ASSERT (stack != NULL, "stack not set");
   for (i = 0; i < stack[0].Nobject; i++) {
     if (stack[0].id[i] != id) continue;
@@ -180,4 +200,5 @@
 void LockStack (Stack *stack) {
 # ifdef THREADED
+  PrintStackInfo (stack, __func__);
   ASSERT (stack != NULL, "stack not set");
   pthread_mutex_lock (&stack[0].mutex);
@@ -188,4 +209,5 @@
 void UnlockStack (Stack *stack) {
 # ifdef THREADED
+  PrintStackInfo (stack, __func__);
   ASSERT (stack != NULL, "stack not set");
   pthread_mutex_unlock (&stack[0].mutex);
