git://git.exim.org
/
exim.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix ${tr } expansion item. Bug 2533
[exim.git]
/
src
/
src
/
expand.c
diff --git
a/src/src/expand.c
b/src/src/expand.c
index 9b85c1e0dd582dc2070b99deea67581d67d56219..661959306bbb6d6f0d06c626b0226486a2883dea 100644
(file)
--- a/
src/src/expand.c
+++ b/
src/src/expand.c
@@
-5291,7
+5291,7
@@
while (*s != 0)
{
client_conn_ctx cctx;
int timeout = 5;
{
client_conn_ctx cctx;
int timeout = 5;
- int save_ptr =
yield->ptr
;
+ int save_ptr =
gstring_length(yield)
;
FILE * fp = NULL;
uschar * arg;
uschar * sub_arg[4];
FILE * fp = NULL;
uschar * arg;
uschar * sub_arg[4];
@@
-5524,7
+5524,7
@@
while (*s != 0)
if (sigalrm_seen)
{
if (sigalrm_seen)
{
- yield->ptr = save_ptr;
+
if (yield)
yield->ptr = save_ptr;
expand_string_message = US "socket read timed out";
goto SOCK_FAIL;
}
expand_string_message = US "socket read timed out";
goto SOCK_FAIL;
}
@@
-5691,7
+5691,7
@@
while (*s != 0)
case EITEM_TR:
{
case EITEM_TR:
{
- int oldptr =
yield->ptr
;
+ int oldptr =
gstring_length(yield)
;
int o2m;
uschar *sub[3];
int o2m;
uschar *sub[3];
@@
-6430,7
+6430,7
@@
while (*s != 0)
case EITEM_REDUCE:
{
int sep = 0;
case EITEM_REDUCE:
{
int sep = 0;
- int save_ptr =
yield->ptr
;
+ int save_ptr =
gstring_length(yield)
;
uschar outsep[2] = { '\0', '\0' };
const uschar *list, *expr, *temp;
uschar *save_iterate_item = iterate_item;
uschar outsep[2] = { '\0', '\0' };
const uschar *list, *expr, *temp;
uschar *save_iterate_item = iterate_item;
@@
-6577,7
+6577,8
@@
while (*s != 0)
item of the output list, add in a space if the new item begins with the
separator character, or is an empty string. */
item of the output list, add in a space if the new item begins with the
separator character, or is an empty string. */
- if (yield->ptr != save_ptr && (temp[0] == *outsep || temp[0] == 0))
+ if ( yield && yield->ptr != save_ptr
+ && (temp[0] == *outsep || temp[0] == 0))
yield = string_catn(yield, US" ", 1);
/* Add the string in "temp" to the output list that we are building,
yield = string_catn(yield, US" ", 1);
/* Add the string in "temp" to the output list that we are building,
@@
-6617,7
+6618,7
@@
while (*s != 0)
the redundant final separator. Even though an empty item at the end of a
list does not count, this is tidier. */
the redundant final separator. Even though an empty item at the end of a
list does not count, this is tidier. */
- else if (yield->ptr != save_ptr) yield->ptr--;
+ else if (yield
&& yield
->ptr != save_ptr) yield->ptr--;
/* Restore preserved $item */
/* Restore preserved $item */
@@
-7549,7
+7550,7
@@
while (*s != 0)
{
uschar outsep[2] = { ':', '\0' };
uschar *address, *error;
{
uschar outsep[2] = { ':', '\0' };
uschar *address, *error;
- int save_ptr =
yield->ptr
;
+ int save_ptr =
gstring_length(yield)
;
int start, end, domain; /* Not really used */
while (isspace(*sub)) sub++;
int start, end, domain; /* Not really used */
while (isspace(*sub)) sub++;
@@
-7580,7
+7581,7
@@
while (*s != 0)
if (address)
{
if (address)
{
- if (yield->ptr != save_ptr && address[0] == *outsep)
+ if (yield
&& yield
->ptr != save_ptr && address[0] == *outsep)
yield = string_catn(yield, US" ", 1);
for (;;)
yield = string_catn(yield, US" ", 1);
for (;;)
@@
-7609,7
+7610,7
@@
while (*s != 0)
/* If we have generated anything, remove the redundant final
separator. */
/* If we have generated anything, remove the redundant final
separator. */
- if (yield->ptr != save_ptr) yield->ptr--;
+ if (yield
&& yield
->ptr != save_ptr) yield->ptr--;
f.parse_allow_group = FALSE;
continue;
}
f.parse_allow_group = FALSE;
continue;
}