]> git.sur5r.net Git - openldap/commitdiff
don't leak if realloc fails (ITS#4477) OPENLDAP_REL_ENG_2_4_BP
authorPierangelo Masarati <ando@openldap.org>
Thu, 6 Apr 2006 19:13:41 +0000 (19:13 +0000)
committerPierangelo Masarati <ando@openldap.org>
Thu, 6 Apr 2006 19:13:41 +0000 (19:13 +0000)
servers/slapd/sl_malloc.c

index 8c204e50a47b914a30e50c22ad4b1e628ba2b160..b19507ab2adb324d0bcf5a7154bfe85706d22961 100644 (file)
@@ -261,6 +261,10 @@ slap_sl_malloc(
        unsigned long diff;
        int i, j;
 
+#ifdef SLAP_NO_SL_MALLOC
+       return ber_malloc_x( size, NULL );
+#endif
+
        /* ber_set_option calls us like this */
        if (!ctx) return ber_memalloc_x(size, NULL);
 
@@ -365,6 +369,10 @@ slap_sl_realloc(void *ptr, ber_len_t size, void *ctx)
        if (ptr == NULL)
                return slap_sl_malloc(size, ctx);
 
+#ifdef SLAP_NO_SL_MALLOC
+       return ber_memrealloc_x( ptr, size, NULL );
+#endif
+
        /* Not our memory? */
        if (!sh || ptr < sh->sh_base || ptr >= sh->sh_end) {
                /* duplicate of realloc behavior, oh well */
@@ -434,6 +442,11 @@ slap_sl_free(void *ptr, void *ctx)
        if (!ptr)
                return;
 
+#ifdef SLAP_NO_SL_MALLOC
+       ber_memfree_x( ptr, NULL );
+       return;
+#endif
+
        if (!sh || ptr < sh->sh_base || ptr >= sh->sh_end) {
                ber_memfree_x(ptr, NULL);
        } else if (sh->sh_stack && (char *)ptr + p[-1] == sh->sh_last) {