gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r7469 - GNUnet/src/util/containers


From: gnunet
Subject: [GNUnet-SVN] r7469 - GNUnet/src/util/containers
Date: Sat, 19 Jul 2008 11:17:20 -0600 (MDT)

Author: durner
Date: 2008-07-19 11:17:20 -0600 (Sat, 19 Jul 2008)
New Revision: 7469

Modified:
   GNUnet/src/util/containers/meta.c
Log:
fix crashes (experienced on FSUI shutdown)

Modified: GNUnet/src/util/containers/meta.c
===================================================================
--- GNUnet/src/util/containers/meta.c   2008-07-19 16:54:13 UTC (rev 7468)
+++ GNUnet/src/util/containers/meta.c   2008-07-19 17:17:20 UTC (rev 7469)
@@ -64,10 +64,13 @@
 void
 GNUNET_meta_data_destroy (MetaData * md)
 {
-  int i;
-  for (i = 0; i < md->itemCount; i++)
+  int i, ic;
+
+  ic = md ? md->itemCount : 0;
+  for (i = 0; i < ic; i++)
     GNUNET_free (md->items[i].data);
-  GNUNET_array_grow (md->items, md->itemCount, 0);
+  if (ic)
+    GNUNET_array_grow (md->items, ic, 0);
   GNUNET_free (md);
 }
 
@@ -478,7 +481,7 @@
 
   if (max < sizeof (MetaDataHeader))
     return GNUNET_SYSERR;       /* far too small */
-  ic = md->itemCount;
+  ic = md ? md->itemCount : 0;
   hdr = NULL;
   while (1)
     {
@@ -563,7 +566,7 @@
   int len;
   unsigned int ic;
 
-  ic = md->itemCount;
+  ic = md ? md->itemCount : 0;
   size = sizeof (MetaDataHeader);
   size += sizeof (unsigned int) * ic;
   for (i = 0; i < ic; i++)
@@ -572,11 +575,11 @@
     size++;
   hdr = GNUNET_malloc (size);
   hdr->version = htonl (0);
-  hdr->entries = htonl (md->itemCount);
+  hdr->entries = htonl (ic);
   for (i = 0; i < ic; i++)
     ((unsigned int *) &hdr[1])[i] = htonl ((unsigned int) md->items[i].type);
   pos = sizeof (MetaDataHeader);
-  pos += sizeof (unsigned int) * md->itemCount;
+  pos += sizeof (unsigned int) * ic;
   for (i = 0; i < ic; i++)
     {
       len = strlen (md->items[i].data) + 1;





reply via email to

[Prev in Thread] Current Thread [Next in Thread]