]> err.no Git - varnish/commitdiff
Add a REPLACE() macro, for manipulating malloced string variables.
authorphk <phk@d4fa192b-c00b-0410-8231-f00ffab90ce4>
Thu, 20 Sep 2007 07:02:35 +0000 (07:02 +0000)
committerphk <phk@d4fa192b-c00b-0410-8231-f00ffab90ce4>
Thu, 20 Sep 2007 07:02:35 +0000 (07:02 +0000)
git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@1957 d4fa192b-c00b-0410-8231-f00ffab90ce4

varnish-cache/include/miniobj.h

index 3c714be1b00e79018d52a6e92c6d76acc7eb577c..cb727c585a2cf73c8e322d81f51f22a2a4d9705d 100644 (file)
                        CHECK_OBJ((to), (type_magic));                  \
        } while (0);
 
-#define CAST_OBJ_NOTNULL(to, from, type_magic)                                 \
+#define CAST_OBJ_NOTNULL(to, from, type_magic)                         \
        do {                                                            \
                (to) = (from);                                          \
                assert((to) != NULL);                                   \
                CHECK_OBJ((to), (type_magic));                          \
        } while (0);
 
+#define REPLACE(ptr, val)                                              \
+       do {                                                            \
+               if ((ptr) != NULL)                                      \
+                       free(ptr);                                      \
+               if ((val) != NULL) {                                    \
+                       ptr = strdup(val);                              \
+                       AN((ptr));                                      \
+               } else {                                                \
+                       ptr = NULL;                                     \
+               }                                                       \
+       } while (0);