Fixed bug with quick filters and attributes with blanks

SVN revision: 1776
This commit is contained in:
Stefan Ritt 2006-12-10 10:45:06 +00:00
parent 95186b9fa9
commit d3aee3f3e6

View File

@ -15791,11 +15791,15 @@ char *param_in_str(char *str, char *param)
void subst_param(char *str, int size, char *param, char *value) void subst_param(char *str, int size, char *param, char *value)
{ {
int len; int len;
char *p1, *p2, *s; char *p1, *p2, *s, param_enc[256];
strlcpy(param_enc, param, sizeof(param_enc));
url_encode(param_enc, sizeof(param_enc));
if (!value[0]) { if (!value[0]) {
/* remove parameter */ /* remove parameter */
s = param_in_str(str, param); s = param_in_str(str, param_enc);
if (s == NULL) if (s == NULL)
return; return;
@ -15803,7 +15807,7 @@ void subst_param(char *str, int size, char *param, char *value)
/* remove parameter */ /* remove parameter */
p1 = s - 1; p1 = s - 1;
for (p2 = p1 + strlen(param) + 1; *p2 && *p2 != '&'; p2++); for (p2 = p1 + strlen(param_enc) + 1; *p2 && *p2 != '&'; p2++);
strlcpy(p1, p2, size - (p1 - str)); strlcpy(p1, p2, size - (p1 - str));
if (!strchr(str, '?') && strchr(str, '&')) if (!strchr(str, '?') && strchr(str, '&'))
@ -15812,19 +15816,19 @@ void subst_param(char *str, int size, char *param, char *value)
return; return;
} }
if ((p1 = param_in_str(str, param)) == NULL) { if ((p1 = param_in_str(str, param_enc)) == NULL) {
if (strchr(str, '?')) if (strchr(str, '?'))
strlcat(str, "&", size); strlcat(str, "&", size);
else else
strlcat(str, "?", size); strlcat(str, "?", size);
strlcat(str, param, size); strlcat(str, param_enc, size);
strlcat(str, "=", size); strlcat(str, "=", size);
strlcat(str, value, size); strlcat(str, value, size);
return; return;
} }
p1 += strlen(param) + 1; p1 += strlen(param_enc) + 1;
for (p2 = p1; *p2 && *p2 != '&'; p2++); for (p2 = p1; *p2 && *p2 != '&'; p2++);
len = p2 - p1; len = p2 - p1;
if (len > (int) strlen(value)) { if (len > (int) strlen(value)) {