wrbuf_destroy allows NULL WRBUF passed to it
authorAdam Dickmeiss <adam@indexdata.dk>
Tue, 9 Mar 2010 08:53:07 +0000 (09:53 +0100)
committerAdam Dickmeiss <adam@indexdata.dk>
Tue, 9 Mar 2010 08:53:07 +0000 (09:53 +0100)
include/yaz/wrbuf.h
src/wrbuf.c
test/tstwrbuf.c

index 46b38f5..0f393a6 100644 (file)
@@ -53,6 +53,8 @@ YAZ_EXPORT WRBUF wrbuf_alloc(void);
 
 /** \brief destroy WRBUF and its buffer
     \param b WRBUF
+    For YAZ 4.0.2 WRBUF b may be NULL.
  */
 YAZ_EXPORT void wrbuf_destroy(WRBUF b);
 
index e6c53e8..31729b0 100644 (file)
@@ -35,8 +35,11 @@ WRBUF wrbuf_alloc(void)
 
 void wrbuf_destroy(WRBUF b)
 {
-    xfree(b->buf);
-    xfree(b);
+    if (b)
+    {
+        xfree(b->buf);
+        xfree(b);
+    }
 }
 
 void wrbuf_rewind(WRBUF b)
index 8b94634..af06e40 100644 (file)
 static void tstwrbuf(void)
 {
     int step;
-    WRBUF wr = wrbuf_alloc();
+    WRBUF wr;
 
-    YAZ_CHECK(wr);
+    wr = 0;
+    wrbuf_destroy(wr);
 
+    wr = wrbuf_alloc();
+    YAZ_CHECK(wr);
     wrbuf_destroy(wr);
 
     wr = wrbuf_alloc();