+ if (data_block == NULL)
+ str_target = (uschar **)(ol->value);
+ else
+ str_target = (uschar **)((uschar *)data_block + (long int)(ol->value));
+ if (extra_condition)
+ {
+ /* We already have a condition, we're conducting a crude hack to let multiple
+ condition rules be chained together, despite storing them in text form. */
+ saved_condition = *str_target;
+ strtemp = string_sprintf("${if and{{bool{%s}}{bool{%s}}}}",
+ saved_condition, sptr);
+ *str_target = string_copy_malloc(strtemp);
+ }
+ else
+ {
+ *str_target = sptr;
+ freesptr = FALSE;
+ }
+ break;
+