]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
fix logic bug
authorAnthony Minessale <anthony.minessale@gmail.com>
Wed, 12 Mar 2008 15:17:18 +0000 (15:17 +0000)
committerAnthony Minessale <anthony.minessale@gmail.com>
Wed, 12 Mar 2008 15:17:18 +0000 (15:17 +0000)
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@7881 d0543943-73ff-0310-b7d9-9358b9ac24b2

src/switch_channel.c

index caba6823fb2acee7fe4debb9380a9c25ec9d37a7..85209abc8490fe97a45f7eab543e0598185029a1 100644 (file)
@@ -1704,22 +1704,23 @@ SWITCH_DECLARE(char *) switch_channel_expand_variables(switch_channel_t *channel
                                                }
                                        }
 
-                                       sub_val = switch_channel_get_variable(channel, vname);
-                                       if (offset || ooffset) {
-                                               cloned_sub_val = strdup(sub_val);
-                                               switch_assert(cloned_sub_val);
-                                               sub_val = cloned_sub_val;
-                                       }
+                                       if ((sub_val = switch_channel_get_variable(channel, vname))) {
+                                               if (offset || ooffset) {
+                                                       cloned_sub_val = strdup(sub_val);
+                                                       switch_assert(cloned_sub_val);
+                                                       sub_val = cloned_sub_val;
+                                               }
 
-                                       if (offset >= 0) {
-                                               sub_val += offset;
-                                       } else if ((size_t)abs(offset) <= strlen(sub_val)) {
-                                               sub_val = cloned_sub_val + (strlen(cloned_sub_val) + offset);
-                                       }
+                                               if (offset >= 0) {
+                                                       sub_val += offset;
+                                               } else if ((size_t)abs(offset) <= strlen(sub_val)) {
+                                                       sub_val = cloned_sub_val + (strlen(cloned_sub_val) + offset);
+                                               }
 
-                                       if (ooffset > 0 && (size_t)ooffset < strlen(sub_val)) {
-                                               if ((ptr = (char *)sub_val + ooffset)) {
-                                                       *ptr = '\0';
+                                               if (ooffset > 0 && (size_t)ooffset < strlen(sub_val)) {
+                                                       if ((ptr = (char *)sub_val + ooffset)) {
+                                                               *ptr = '\0';
+                                                       }
                                                }
                                        }