ben 97/12/29 09:51:59
Modified: src CHANGES
src/main alloc.c
Log:
Make table_{set,unset}() deal correctly with multiple occurrences of the
same key.
PR: 1604
Submitted by: Stephen Scheck <[EMAIL PROTECTED]>, Ben
Reviewed by: Ben Laurie
Revision Changes Path
1.551 +4 -0 apachen/src/CHANGES
Index: CHANGES
===================================================================
RCS file: /export/home/cvs/apachen/src/CHANGES,v
retrieving revision 1.550
retrieving revision 1.551
diff -u -r1.550 -r1.551
--- CHANGES 1997/12/28 04:50:59 1.550
+++ CHANGES 1997/12/29 17:51:51 1.551
@@ -1,5 +1,9 @@
Changes with Apache 1.3b4
+ *) table_set() and table_unset() did not deal correctly with
+ multiple occurrences of the same key. [Stephen Scheck
+ <[EMAIL PROTECTED]>, Ben Laurie] PR#1604
+
*) Correct handling of quotation marks in AuthName realm names; as a
byproduct, a new function: ap_escape_quotes(). [Ken Coar] PR#1195
1.63 +5 -2 apachen/src/main/alloc.c
Index: alloc.c
===================================================================
RCS file: /export/home/cvs/apachen/src/main/alloc.c,v
retrieving revision 1.62
retrieving revision 1.63
diff -u -r1.62 -r1.63
--- alloc.c 1997/12/26 23:25:46 1.62
+++ alloc.c 1997/12/29 17:51:57 1.63
@@ -732,11 +732,12 @@
table_entry *elts = (table_entry *) t->elts;
int done = 0;
- for (i = 0; i < t->nelts; ++i)
+ for (i = 0; i < t->nelts; )
if (!strcasecmp(elts[i].key, key)) {
if (!done) {
elts[i].val = pstrdup(t->pool, val);
done = 1;
+ ++i;
}
else { /* delete an extraneous element */
for (j = i, k = i + 1; k < t->nelts; ++j, ++k) {
@@ -746,6 +747,7 @@
--t->nelts;
}
}
+ else ++i;
if (!done) {
elts = (table_entry *) push_array(t);
@@ -759,7 +761,7 @@
register int i, j, k;
table_entry *elts = (table_entry *) t->elts;
- for (i = 0; i < t->nelts; ++i)
+ for (i = 0; i < t->nelts; )
if (!strcasecmp(elts[i].key, key)) {
/* found an element to skip over
@@ -773,6 +775,7 @@
}
--t->nelts;
}
+ else ++i;
}
API_EXPORT(void) table_merge(table *t, const char *key, const char *val)