diff --git a/src/switch_channel.c b/src/switch_channel.c index caba6823fb..85209abc84 100644 --- a/src/switch_channel.c +++ b/src/switch_channel.c @@ -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'; + } } }