1
0
mirror of https://github.com/apache/httpd.git synced 2025-08-07 04:02:58 +03:00

Remove unnecessary apr_table_do() function casts

Function casts can cause hard-to-debug corruption issues if a
declaration is accidentally changed to be incompatible. Luckily, most of
the function casts for apr_table_do() calls are unnecessary. Remove
them, and adjust the signatures for helpers that weren't taking void* as
the first argument.

The remaining helper that requires a cast is http_filter.c's
form_header_field(), which is probably where many of these casts were
copy-pasted from. I have left it as-is: it has other direct callers
besides apr_table_do(), and it's already documented with warnings not to
change the function signature.

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1769192 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Jacob Champion
2016-11-10 20:53:21 +00:00
parent bcfb765174
commit 091f96ee10
5 changed files with 19 additions and 23 deletions

View File

@@ -311,15 +311,16 @@ static apr_status_t ap_session_set(request_rec * r, session_rec * z,
return APR_SUCCESS;
}
static int identity_count(int *count, const char *key, const char *val)
static int identity_count(void *v, const char *key, const char *val)
{
int *count = v;
*count += strlen(key) * 3 + strlen(val) * 3 + 1;
return 1;
}
static int identity_concat(char *buffer, const char *key, const char *val)
static int identity_concat(void *v, const char *key, const char *val)
{
char *slider = buffer;
char *slider = v;
int length = strlen(slider);
slider += length;
if (length) {
@@ -356,11 +357,9 @@ static apr_status_t session_identity_encode(request_rec * r, session_rec * z)
char *expiry = apr_psprintf(z->pool, "%" APR_INT64_T_FMT, z->expiry);
apr_table_setn(z->entries, SESSION_EXPIRY, expiry);
}
apr_table_do((int (*) (void *, const char *, const char *))
identity_count, &length, z->entries, NULL);
apr_table_do(identity_count, &length, z->entries, NULL);
buffer = apr_pcalloc(r->pool, length + 1);
apr_table_do((int (*) (void *, const char *, const char *))
identity_concat, buffer, z->entries, NULL);
apr_table_do(identity_concat, buffer, z->entries, NULL);
z->encoded = buffer;
return OK;