if (ctx->argc != 1) {
SSI_CREATE_ERROR_BUCKET(ctx, f, bb);
+ ctx->flags &= SSI_FLAG_CLEAR_PRINT_COND;
+ ctx->flags |= SSI_FLAG_COND_ERROR;
return APR_SUCCESS;
}
ap_log_rerror(APLOG_MARK, APLOG_ERR, 0, r, APLOGNO(01354) "unknown parameter \"%s\" "
"to tag if in %s", tag, r->filename);
SSI_CREATE_ERROR_BUCKET(ctx, f, bb);
+ ctx->flags &= SSI_FLAG_CLEAR_PRINT_COND;
+ ctx->flags |= SSI_FLAG_COND_ERROR;
return APR_SUCCESS;
}
ap_log_rerror(APLOG_MARK, APLOG_ERR, 0, r, APLOGNO(01355) "missing expr value for if "
"element in %s", r->filename);
SSI_CREATE_ERROR_BUCKET(ctx, f, bb);
+ ctx->flags &= SSI_FLAG_CLEAR_PRINT_COND;
+ ctx->flags |= SSI_FLAG_COND_ERROR;
return APR_SUCCESS;
}
expr_ret = parse_ap_expr(ctx, expr, &was_error);
if (was_error) {
+ ctx->flags &= SSI_FLAG_CLEAR_PRINT_COND;
+ ctx->flags |= SSI_FLAG_COND_ERROR;
SSI_CREATE_ERROR_BUCKET(ctx, f, bb);
return APR_SUCCESS;
}
if (ctx->argc != 1) {
SSI_CREATE_ERROR_BUCKET(ctx, f, bb);
+ ctx->flags &= SSI_FLAG_CLEAR_PRINT_COND;
+ ctx->flags |= SSI_FLAG_COND_ERROR;
return APR_SUCCESS;
}
ap_log_rerror(APLOG_MARK, APLOG_ERR, 0, r, APLOGNO(01358) "unknown parameter \"%s\" "
"to tag if in %s", tag, r->filename);
SSI_CREATE_ERROR_BUCKET(ctx, f, bb);
+ ctx->flags &= SSI_FLAG_CLEAR_PRINT_COND;
+ ctx->flags |= SSI_FLAG_COND_ERROR;
return APR_SUCCESS;
}
ap_log_rerror(APLOG_MARK, APLOG_ERR, 0, r, APLOGNO(01359) "missing expr in elif "
"statement: %s", r->filename);
SSI_CREATE_ERROR_BUCKET(ctx, f, bb);
+ ctx->flags &= SSI_FLAG_CLEAR_PRINT_COND;
+ ctx->flags |= SSI_FLAG_COND_ERROR;
return APR_SUCCESS;
}
expr_ret = parse_ap_expr(ctx, expr, &was_error);
if (was_error) {
+ ctx->flags &= SSI_FLAG_CLEAR_PRINT_COND;
+ ctx->flags |= SSI_FLAG_COND_ERROR;
SSI_CREATE_ERROR_BUCKET(ctx, f, bb);
return APR_SUCCESS;
}
DEBUG_DUMP_COND(ctx, " else");
+ /* Don't toggle printing if there was an expression evaluation error */
+ if (ctx->flags & SSI_FLAG_COND_ERROR) {
+ return APR_SUCCESS;
+ }
+
if (ctx->flags & SSI_FLAG_COND_TRUE) {
ctx->flags &= SSI_FLAG_CLEAR_PRINTING;
}
DEBUG_DUMP_COND(ctx, "endif");
ctx->flags |= (SSI_FLAG_PRINTING | SSI_FLAG_COND_TRUE);
+ ctx->flags &= ~SSI_FLAG_COND_ERROR;
return APR_SUCCESS;
}