Index: trunk/src/sh_mem.c
===================================================================
--- trunk/src/sh_mem.c	(revision 587)
+++ trunk/src/sh_mem.c	(revision 592)
@@ -150,9 +150,9 @@
     {
       memlist_t   * merr = calloc(1,sizeof(memlist_t));
-
-      memcpy(merr, this, sizeof(memlist_t));
-      merr->next = merrlist;
-      merrlist   = merr;
-
+      if (merr) {
+	  memcpy(merr, this, sizeof(memlist_t));
+	  merr->next = merrlist;
+	  merrlist   = merr;
+	}
       this = this->next;
     }
@@ -198,10 +198,10 @@
 	{
 	  merr = calloc (1,sizeof(memlist_t));
-
-	  memcpy(merr, this, sizeof(memlist_t));
-	  merr->size = 2;
-
-	  merr->next = merrlist;
-	  merrlist   = merr;
+	  if (merr) {
+	    memcpy(merr, this, sizeof(memlist_t));
+	    merr->size = 2;
+	    merr->next = merrlist;
+	    merrlist   = merr;
+	  }
 	}
       else
@@ -210,20 +210,20 @@
 	    {
 	      merr = calloc(1, sizeof(memlist_t));
-	      
-	      memcpy(merr, this, sizeof(memlist_t));
-	      merr->size = 1;
-	      
-	      merr->next = merrlist;
-	      merrlist   = merr;
+	      if (merr) {
+		memcpy(merr, this, sizeof(memlist_t));
+		merr->size = 1;
+		merr->next = merrlist;
+		merrlist   = merr;
+	      }
 	    }
 	  if ( this->real_address[SH_MEMMULT-1] != CHECKBYTE )
 	    {
 	      merr = calloc(1, sizeof(memlist_t));
-	      
-	      memcpy(merr, this, sizeof(memlist_t));
-	      merr->size = 0;
-	      
-	      merr->next = merrlist;
-	      merrlist   = merr;
+	      if (merr) {
+		memcpy(merr, this, sizeof(memlist_t));
+		merr->size = 0;
+		merr->next = merrlist;
+		merrlist   = merr;
+	      }
 	    }
 	}
@@ -378,10 +378,10 @@
 	{
 	  merr = calloc(1, sizeof(memlist_t));
-
-	  memcpy(merr, this, sizeof(memlist_t));
-	  merr->size = 1;
-
-	  merr->next = merrlist;
-	  merrlist = merr;
+	  if (merr) {
+	    memcpy(merr, this, sizeof(memlist_t));
+	    merr->size = 1;
+	    merr->next = merrlist;
+	    merrlist = merr;
+	  }
 	}
 
@@ -389,10 +389,10 @@
 	{
 	  merr = calloc(1,sizeof(memlist_t));
-
-	  memcpy(merr, this, sizeof(memlist_t));
-	  merr->size = 0;
-
-	  merr->next = merrlist;
-	  merrlist = merr;
+	  if (merr) {
+	    memcpy(merr, this, sizeof(memlist_t));
+	    merr->size = 0;
+	    merr->next = merrlist;
+	    merrlist = merr;
+	  }
 	}
 
