dougm 01/08/27 10:14:48 Modified: src/modules/perl modperl_bucket.c Log: adjust to bucket/sms changes Revision Changes Path 1.6 +18 -11 modperl-2.0/src/modules/perl/modperl_bucket.c Index: modperl_bucket.c =================================================================== RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_bucket.c,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- modperl_bucket.c 2001/08/21 16:46:56 1.5 +++ modperl_bucket.c 2001/08/27 17:14:48 1.6 @@ -9,6 +9,7 @@ apr_bucket_refcount refcount; SV *sv; PerlInterpreter *perl; + apr_sms_t *sms; } modperl_bucket_sv_t; static apr_status_t @@ -44,14 +45,9 @@ SvREFCNT_dec(svbucket->sv); - safefree(svbucket); + apr_sms_free(svbucket->sms, svbucket); } -static void modperl_bucket_sv_free(void *e) -{ - Safefree(e); -} - static const apr_bucket_type_t modperl_bucket_sv_type = { "mod_perl SV bucket", 4, modperl_bucket_sv_destroy, @@ -68,8 +64,11 @@ { modperl_bucket_sv_t *svbucket; - Newz(0, svbucket, 1, modperl_bucket_sv_t); + svbucket = (modperl_bucket_sv_t *)apr_sms_malloc(bucket->sms, + sizeof(*svbucket)); + svbucket->sms = bucket->sms; + bucket = apr_bucket_shared_make(bucket, svbucket, offset, offset+len); /* XXX: need to deal with PerlInterpScope */ @@ -79,7 +78,7 @@ svbucket->sv = sv; if (!bucket) { - Safefree(svbucket); + apr_sms_free(svbucket->sms, svbucket); return NULL; } @@ -88,8 +87,6 @@ MP_TRACE_f(MP_FUNC, "sv=0x%lx, refcnt=%d\n", (unsigned long)sv, SvREFCNT(sv)); - bucket->free = modperl_bucket_sv_free; - bucket->type = &modperl_bucket_sv_type; return bucket; @@ -97,7 +94,17 @@ apr_bucket *modperl_bucket_sv_create(pTHX_ SV *sv, int offset, int len) { - apr_bucket *bucket = (apr_bucket *)safemalloc(sizeof(*bucket)); + apr_sms_t *sms; + apr_bucket *bucket; + + if (!apr_bucket_global_sms) { + apr_sms_std_create(&apr_bucket_global_sms); + } + + sms = apr_bucket_global_sms; + bucket = (apr_bucket *)apr_sms_malloc(sms, sizeof(*bucket)); APR_BUCKET_INIT(bucket); + bucket->sms = sms; + return modperl_bucket_sv_make(aTHX_ bucket, sv, offset, len); }