]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
FS-11691 [core] fix switch_log_node_dup() so that it completely duplicates log nodes
authorChris Rienzo <chris@rienzo.com>
Thu, 7 Mar 2019 01:54:57 +0000 (20:54 -0500)
committerChris Rienzo <chris@rienzo.com>
Thu, 7 Mar 2019 02:43:54 +0000 (21:43 -0500)
src/switch_log.c

index 09c2b49df2cccc9c44a5a887fcc153df333b74ee..bed7b48968d5c5812018e42ca112b3d85eeaf954 100644 (file)
@@ -108,15 +108,21 @@ SWITCH_DECLARE(switch_log_node_t *) switch_log_node_dup(const switch_log_node_t
        switch_log_node_t *newnode = switch_log_node_alloc();
 
        *newnode = *node;
+       newnode->content = NULL;
 
-       if (!zstr(node->data)) {
+       if (node->data) {
                newnode->data = strdup(node->data);
-               switch_assert(node->data);
+               switch_assert(newnode->data);
+
+               // content is a pointer inside data; need to calculate the new pointer
+               if (node->content && node->content >= node->data) {
+                       newnode->content = newnode->data + (node->content - node->data);
+               }
        }
 
-       if (!zstr(node->userdata)) {
+       if (node->userdata) {
                newnode->userdata = strdup(node->userdata);
-               switch_assert(node->userdata);
+               switch_assert(newnode->userdata);
        }
 
        return newnode;