From: RĂ©mi Duraffort Date: Fri, 26 Sep 2008 20:59:23 +0000 (+0200) Subject: vlc_array: Macro safety. X-Git-Tag: 1.0.0-pre1~2902 X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=05c8c0d9164b349c8fe94386b4e5270c5d039339;p=vlc vlc_array: Macro safety. --- diff --git a/include/vlc_arrays.h b/include/vlc_arrays.h index e7d800578c..a121000f2d 100644 --- a/include/vlc_arrays.h +++ b/include/vlc_arrays.h @@ -19,7 +19,8 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. *****************************************************************************/ + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. + *****************************************************************************/ #ifndef VLC_ARRAYS_H_ #define VLC_ARRAYS_H_ @@ -230,22 +231,28 @@ #define TYPEDEF_ARRAY(type, name) typedef DECL_ARRAY(type) name; #define ARRAY_INIT(array) \ + do { \ (array).i_alloc = 0; \ (array).i_size = 0; \ - (array).p_elems = NULL; + (array).p_elems = NULL; \ + } while(0) #define ARRAY_RESET(array) \ + do { \ (array).i_alloc = 0; \ (array).i_size = 0; \ - free( (array).p_elems ); (array).p_elems = NULL; + free( (array).p_elems ); (array).p_elems = NULL; \ + } while(0) -#define ARRAY_APPEND(array, elem) { \ +#define ARRAY_APPEND(array, elem) \ + do { \ _ARRAY_GROW1(array); \ (array).p_elems[(array).i_size] = elem; \ (array).i_size++; \ -} + } while(0) -#define ARRAY_INSERT(array,elem,pos) { \ +#define ARRAY_INSERT(array,elem,pos) \ + do { \ _ARRAY_GROW1(array); \ if( (array).i_size - pos ) { \ memmove( (array).p_elems + pos + 1, (array).p_elems + pos, \ @@ -253,9 +260,10 @@ } \ (array).p_elems[pos] = elem; \ (array).i_size++; \ -} + } while(0) -#define ARRAY_REMOVE(array,pos) { \ +#define ARRAY_REMOVE(array,pos) \ + do { \ if( (array).i_size - (pos) - 1 ) \ { \ memmove( (array).p_elems + pos, (array).p_elems + pos + 1, \ @@ -263,7 +271,7 @@ } \ (array).i_size--; \ _ARRAY_SHRINK(array); \ -} + } while(0) #define ARRAY_VAL(array, pos) array.p_elems[pos]