Author: coreyfarrell
Date: Wed Nov 19 13:32:23 2014
New Revision: 428274

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=428274
Log:
stringfields: Fix bug in ast_string_fields_copy.

ast_string_fields_copy relies on the fact that
__ast_string_field_release_active never previously
zeroed pool->used, so keeping the existing pointer
was "ok".  Now that existing pools can be reset to
'empty', it is important to set each field to
__ast_string_field_empty after releasing the memory.

ASTERISK-24535 #close
Reported by: Corey Farrell
Review: https://reviewboard.asterisk.org/r/4186/
........

Merged revisions 428272 from http://svn.asterisk.org/svn/asterisk/branches/12
........

Merged revisions 428273 from http://svn.asterisk.org/svn/asterisk/branches/13

Modified:
    trunk/   (props changed)
    trunk/include/asterisk/stringfields.h

Propchange: trunk/
------------------------------------------------------------------------------
Binary property 'branch-13-merged' - no diff available.

Modified: trunk/include/asterisk/stringfields.h
URL: 
http://svnview.digium.com/svn/asterisk/trunk/include/asterisk/stringfields.h?view=diff&rev=428274&r1=428273&r2=428274
==============================================================================
--- trunk/include/asterisk/stringfields.h (original)
+++ trunk/include/asterisk/stringfields.h Wed Nov 19 13:32:23 2014
@@ -438,10 +438,11 @@
        int __len__ = ((void *)&(copy)->__field_mgr - (void 
*)&(copy)->__field_mgr_pool)/__ptr_size__ - 1; \
        int __len2__ = ((void *)&(orig)->__field_mgr - (void 
*)&(orig)->__field_mgr_pool)/__ptr_size__ - 1; \
        if (__len__ == __len2__) { \
-               char **__copy_head__ = (void *)&(copy)->__field_mgr_pool + 
__ptr_size__; \
-               char **__orig_head__ = (void *)&(orig)->__field_mgr_pool + 
__ptr_size__; \
+               ast_string_field *__copy_head__ = (void 
*)&(copy)->__field_mgr_pool + __ptr_size__; \
+               ast_string_field *__orig_head__ = (void 
*)&(orig)->__field_mgr_pool + __ptr_size__; \
                for (__len2__ -= 1; __len2__ >= 0; __len2__--) { \
                        
__ast_string_field_release_active((copy)->__field_mgr_pool, 
__copy_head__[__len2__]); \
+                       __copy_head__[__len2__] = __ast_string_field_empty; \
                } \
                for (__len__ -= 1; __len__ >= 0; __len__--) { \
                        if (ast_string_field_ptr_set((copy), 
&__copy_head__[__len__], __orig_head__[__len__])) { \


-- 
_____________________________________________________________________
-- Bandwidth and Colocation Provided by http://www.api-digital.com --

svn-commits mailing list
To UNSUBSCRIBE or update options visit:
   http://lists.digium.com/mailman/listinfo/svn-commits

Reply via email to