gnunet-svn
[Top][All Lists]
Advanced

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

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


From: gnunet
Subject: [GNUnet-SVN] r7732 - GNUnet/src/util/containers
Date: Thu, 2 Oct 2008 11:22:39 -0600 (MDT)

Author: durner
Date: 2008-10-02 11:22:39 -0600 (Thu, 02 Oct 2008)
New Revision: 7732

Modified:
   GNUnet/src/util/containers/bloomfilter.c
Log:
synchronize bloomfilter access, hopefully fixing #1381

Modified: GNUnet/src/util/containers/bloomfilter.c
===================================================================
--- GNUnet/src/util/containers/bloomfilter.c    2008-10-02 16:17:49 UTC (rev 
7731)
+++ GNUnet/src/util/containers/bloomfilter.c    2008-10-02 17:22:39 UTC (rev 
7732)
@@ -547,9 +547,17 @@
 GNUNET_bloomfilter_get_raw_data (struct GNUNET_BloomFilter *bf,
                                  char *data, unsigned int size)
 {
+  if (NULL == bf)
+    return GNUNET_SYSERR;
+  GNUNET_mutex_lock (bf->lock);
+
   if (bf->bitArraySize != size)
-    return GNUNET_SYSERR;
+    {
+      GNUNET_mutex_unlock (bf->lock);
+      return GNUNET_SYSERR;
+    }
   memcpy (data, bf->bitArray, size);
+  GNUNET_mutex_unlock (bf->lock);
   return GNUNET_OK;
 }
 
@@ -644,12 +652,19 @@
 {
   unsigned int i;
 
+  if (NULL == bf)
+    return GNUNET_YES;
+  GNUNET_mutex_lock (bf->lock);
   if (bf->bitArraySize != size)
-    return GNUNET_SYSERR;
+    {
+      GNUNET_mutex_unlock (bf->lock);
+      return GNUNET_SYSERR;
+    }
   /* FIXME: we could do this 4-8x faster by
      going over int/long arrays */
   for (i = 0; i < size; i++)
     bf->bitArray[i] |= data[i];
+  GNUNET_mutex_unlock (bf->lock);
   return GNUNET_OK;
 }
 





reply via email to

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