Attempt at building with CMake.
[bluesky.git] / store.c
diff --git a/store.c b/store.c
index 63228b2..9b509e6 100644 (file)
--- a/store.c
+++ b/store.c
@@ -31,11 +31,17 @@ BlueSkyRCStr *bluesky_string_new(gpointer data, gsize len)
 
 void bluesky_string_ref(BlueSkyRCStr *string)
 {
+    if (string == NULL)
+        return;
+
     g_atomic_int_inc(&string->refcount);
 }
 
 void bluesky_string_unref(BlueSkyRCStr *string)
 {
+    if (string == NULL)
+        return;
+
     if (g_atomic_int_dec_and_test(&string->refcount)) {
         g_free(string->data);
         g_free(string);
@@ -45,9 +51,14 @@ void bluesky_string_unref(BlueSkyRCStr *string)
 /* Duplicate and return a new reference-counted string, containing a copy of
  * the original data, with a reference count of 1.  As an optimization, if the
  * passed-in string already has a reference count of 1, the original is
- * returned.   Can be used to make a mutable copy of a shared string. */
+ * returned.   Can be used to make a mutable copy of a shared string.  For this
+ * to truly be safe, it is probably needed that there be some type of lock
+ * protecting access to the string. */
 BlueSkyRCStr *bluesky_string_dup(BlueSkyRCStr *string)
 {
+    if (string == NULL)
+        return NULL;
+
     if (g_atomic_int_dec_and_test(&string->refcount)) {
         /* There are no other shared copies, so return this one. */
         g_atomic_int_inc(&string->refcount);