]> git.sesse.net Git - vlc/commitdiff
Improve access initialization macro safety
authorRémi Denis-Courmont <remi@remlab.net>
Thu, 1 Sep 2011 18:14:20 +0000 (21:14 +0300)
committerRémi Denis-Courmont <remi@remlab.net>
Thu, 1 Sep 2011 18:17:02 +0000 (21:17 +0300)
include/vlc_access.h

index f9475a8162713daa240b0b5c3ae06ac989ffdb2c..04a30b0e63ac555cfa963ca0969feb4808ca985c 100644 (file)
@@ -153,23 +153,29 @@ static inline void access_InitFields( access_t *p_a )
  */
 VLC_API input_thread_t * access_GetParentInput( access_t *p_access ) VLC_USED;
 
-#define ACCESS_SET_CALLBACKS( read, block, control, seek )              \
-    p_access->pf_read = read;                                           \
-    p_access->pf_block = block;                                         \
-    p_access->pf_control = control;                                     \
-    p_access->pf_seek = seek;
-
-#define STANDARD_READ_ACCESS_INIT                                       \
-    access_InitFields( p_access );                                      \
-    ACCESS_SET_CALLBACKS( Read, NULL, Control, Seek );                  \
-    p_sys = p_access->p_sys = calloc( 1, sizeof( access_sys_t ));       \
-    if( !p_sys ) return VLC_ENOMEM;
-
-#define STANDARD_BLOCK_ACCESS_INIT                                      \
-    access_InitFields( p_access );                                      \
-    ACCESS_SET_CALLBACKS( NULL, Block, Control, Seek );                 \
-    p_sys = p_access->p_sys = calloc( 1, sizeof( access_sys_t ) );      \
-    if( !p_sys ) return VLC_ENOMEM;
+#define ACCESS_SET_CALLBACKS( read, block, control, seek ) \
+    do { \
+        p_access->pf_read = (read); \
+        p_access->pf_block = (block); \
+        p_access->pf_control = (control); \
+        p_access->pf_seek = (seek); \
+    } while(0)
+
+#define STANDARD_READ_ACCESS_INIT \
+    do { \
+        access_InitFields( p_access ); \
+        ACCESS_SET_CALLBACKS( Read, NULL, Control, Seek ); \
+        p_sys = p_access->p_sys = calloc( 1, sizeof( access_sys_t ) ); \
+        if( !p_sys ) return VLC_ENOMEM;\
+    } while(0);
+
+#define STANDARD_BLOCK_ACCESS_INIT \
+    do { \
+        access_InitFields( p_access ); \
+        ACCESS_SET_CALLBACKS( NULL, Block, Control, Seek ); \
+        p_sys = p_access->p_sys = calloc( 1, sizeof( access_sys_t ) ); \
+        if( !p_sys ) return VLC_ENOMEM; \
+    } while(0);
 
 /**
  * @}