Values in the kvstore are raw byte arrays, not strings.
[bluesky.git] / bluesky / util.c
index 1f21bbf..2e6f0aa 100644 (file)
@@ -51,6 +51,13 @@ BlueSkyRCStr *bluesky_string_new(gpointer data, gsize len)
     return string;
 }
 
+/* Create a new BlueSkyRCStr from a GString.  The GString is destroyed. */
+BlueSkyRCStr *bluesky_string_new_from_gstring(GString *s)
+{
+    gsize len = s->len;
+    return bluesky_string_new(g_string_free(s, FALSE), len);
+}
+
 void bluesky_string_ref(BlueSkyRCStr *string)
 {
     if (string == NULL)
@@ -101,5 +108,8 @@ void bluesky_string_resize(BlueSkyRCStr *string, gsize len)
     if (string->len == len)
         return;
 
+    g_warn_if_fail(string->refcount == 1);
+
     string->data = g_realloc(string->data, len);
+    string->len = len;
 }