apr_rmm_realloc() needs to call apr_rmm_free() with the old block.
-aaron
On Thu, Mar 14, 2002 at 11:18:57PM -0000, [EMAIL PROTECTED] wrote:
> dougm 02/03/14 15:18:56
>
> Modified: . CHANGES
> include apr_rmm.h
> misc apr_rmm.c
> Log:
> Submitted by: Madhusudan Mathihalli <[EMAIL PROTECTED]>
> Reviewed by: dougm
> add apr_rmm_realloc() function
>
> Revision Changes Path
> 1.59 +3 -0 apr-util/CHANGES
>
> Index: CHANGES
> ===================================================================
> RCS file: /home/cvs/apr-util/CHANGES,v
> retrieving revision 1.58
> retrieving revision 1.59
> diff -u -r1.58 -r1.59
> --- CHANGES 6 Mar 2002 17:51:22 -0000 1.58
> +++ CHANGES 14 Mar 2002 23:18:56 -0000 1.59
> @@ -1,5 +1,8 @@
> Changes with APR-util b1
>
> + *) add apr_rmm_realloc() function
> + [Madhusudan Mathihalli <[EMAIL PROTECTED]>]
> +
> *) renames: apr_ansi_time_to_apr_time becomes apr_time_ansi_put
> ap_exploded_time_t becomes apr_time_exp_t
> [Thom May <[EMAIL PROTECTED]>]
>
>
>
> 1.6 +1 -0 apr-util/include/apr_rmm.h
>
> Index: apr_rmm.h
> ===================================================================
> RCS file: /home/cvs/apr-util/include/apr_rmm.h,v
> retrieving revision 1.5
> retrieving revision 1.6
> diff -u -r1.5 -r1.6
> --- apr_rmm.h 13 Mar 2002 20:40:48 -0000 1.5
> +++ apr_rmm.h 14 Mar 2002 23:18:56 -0000 1.6
> @@ -120,6 +120,7 @@
> * @param reqsize How much memory to allocate
> */
> APU_DECLARE(apr_rmm_off_t) apr_rmm_malloc(apr_rmm_t *rmm, apr_size_t
> reqsize);
> +APU_DECLARE(apr_rmm_off_t) apr_rmm_realloc(apr_rmm_t *rmm, void *entity,
> apr_size_t reqsize);
>
> /**
> * Allocate memory from the block of relocatable memory and initialize it
> to zero.
>
>
>
> 1.9 +27 -0 apr-util/misc/apr_rmm.c
>
> Index: apr_rmm.c
> ===================================================================
> RCS file: /home/cvs/apr-util/misc/apr_rmm.c,v
> retrieving revision 1.8
> retrieving revision 1.9
> diff -u -r1.8 -r1.9
> --- apr_rmm.c 13 Mar 2002 20:40:49 -0000 1.8
> +++ apr_rmm.c 14 Mar 2002 23:18:56 -0000 1.9
> @@ -368,6 +368,33 @@
> return this;
> }
>
> +APU_DECLARE(apr_rmm_off_t) apr_rmm_realloc(apr_rmm_t *rmm, void *entity,
> + apr_size_t reqsize)
> +{
> + apr_status_t rv;
> + apr_rmm_off_t this;
> + apr_rmm_off_t old;
> +
> + if (!entity) {
> + return apr_rmm_malloc(rmm, reqsize);
> + }
> +
> + reqsize = (1 + (reqsize - 1) / grain) * grain;
> + old = apr_rmm_offset_get(rmm, entity);
> +
> + if ((this = apr_rmm_malloc(rmm, reqsize)) < 0) {
> + return rv;
> + }
> +
> + if (old >= 0) {
> + memcpy(apr_rmm_addr_get(rmm, this),
> + apr_rmm_addr_get(rmm, old),reqsize);
> + move_block(rmm, old, 1);
> + }
> +
> + return this;
> +}
> +
> APU_DECLARE(apr_status_t) apr_rmm_free(apr_rmm_t *rmm, apr_rmm_off_t this)
> {
> apr_status_t rv;
>
>
>