From: Cliff Woolley Date: Sat, 25 Aug 2001 22:56:22 +0000 (+0000) Subject: BUCKETS SMS PHASE 1 X-Git-Tag: 2.0.25~58 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=2a2a31a5424058e68b31f6d570b3cd211f378358;p=apache BUCKETS SMS PHASE 1 Update to match apr-util git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@90664 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/include/http_protocol.h b/include/http_protocol.h index b2754ed910..d3065f672c 100644 --- a/include/http_protocol.h +++ b/include/http_protocol.h @@ -597,6 +597,8 @@ struct ap_bucket_error { int status; /** The error string */ const char *data; + /** The SMS from which this structure was allocated */ + apr_sms_t *sms; }; AP_DECLARE_DATA extern const apr_bucket_type_t ap_bucket_type_error; diff --git a/server/error_bucket.c b/server/error_bucket.c index 6484feb2b9..dc75a3d0db 100644 --- a/server/error_bucket.c +++ b/server/error_bucket.c @@ -68,17 +68,20 @@ static apr_status_t error_read(apr_bucket *b, const char **str, return APR_SUCCESS; } +static void error_destroy(void *data) { + ap_bucket_error *h; + apr_sms_free(h->sms, h); +} + AP_DECLARE(apr_bucket *) ap_bucket_error_make(apr_bucket *b, int error, const char *buf, apr_pool_t *p) { ap_bucket_error *h; - h = malloc(sizeof(*h)); - if (h == NULL) { - return NULL; - } + h = (ap_bucket_error *)apr_sms_malloc(b->sms, sizeof(*h)); h->status = error; h->data = (buf) ? apr_pstrdup(p, buf) : NULL; + h->sms = b->sms; b->length = 0; b->start = 0; @@ -90,16 +93,22 @@ AP_DECLARE(apr_bucket *) ap_bucket_error_make(apr_bucket *b, int error, AP_DECLARE(apr_bucket *) ap_bucket_error_create(int error, const char *buf, apr_pool_t *p) { - apr_bucket *b = (apr_bucket *)malloc(sizeof(*b)); - + apr_sms_t *sms; + apr_bucket *b; + + if (!apr_bucket_global_sms) { + apr_sms_std_create(&apr_bucket_global_sms); + } + sms = apr_bucket_global_sms; + b = (apr_bucket *)apr_sms_malloc(sms, sizeof(*b)); APR_BUCKET_INIT(b); - b->free = free; + b->sms = sms; return ap_bucket_error_make(b, error, buf, p); } AP_DECLARE_DATA const apr_bucket_type_t ap_bucket_type_error = { "ERROR", 5, - free, + error_destroy, error_read, apr_bucket_setaside_notimpl, apr_bucket_split_notimpl,