[vlc-devel] [PATCH 6/6] modules: check deactivation callback type

RĂ©mi Denis-Courmont remi at remlab.net
Wed Jul 24 21:38:39 CEST 2019


---
 include/vlc_plugin.h |  2 +-
 src/modules/entry.c  | 12 +++++++++++-
 2 files changed, 12 insertions(+), 2 deletions(-)

diff --git a/include/vlc_plugin.h b/include/vlc_plugin.h
index bd06aa224d..2ddc6cb0b1 100644
--- a/include/vlc_plugin.h
+++ b/include/vlc_plugin.h
@@ -314,7 +314,7 @@ VLC_METADATA_EXPORTS
 #define set_callbacks( activate, deactivate ) \
     set_callback(activate) \
     if (vlc_module_set(VLC_MODULE_CB_CLOSE, #deactivate, \
-                       (void *)(deactivate))) \
+                       (void (*)(vlc_object_t *)){ deactivate })) \
         goto error;
 
 #define cannot_unload_broken_library( ) \
diff --git a/src/modules/entry.c b/src/modules/entry.c
index 52326386e2..c3e64af3d3 100644
--- a/src/modules/entry.c
+++ b/src/modules/entry.c
@@ -274,7 +274,7 @@ static int vlc_plugin_desc_cb(void *ctx, void *tgt, int propid, ...)
 
         case VLC_MODULE_CB_CLOSE:
             module->deactivate_name = va_arg(ap, const char *);
-            module->deactivate = va_arg (ap, void *);
+            module->deactivate = va_arg(ap, void (*)(vlc_object_t *));
             break;
 
         case VLC_MODULE_NO_UNLOAD:
@@ -493,6 +493,16 @@ static int vlc_plugin_gpa_cb(void *ctx, void *tgt, int propid, ...)
             va_end (ap);
             break;
         }
+        case VLC_MODULE_CB_CLOSE:
+        {
+            va_list ap;
+
+            va_start(ap, propid);
+            name = va_arg(ap, const char *);
+            addr = va_arg(ap, void (*)(vlc_object_t *));
+            va_end(ap);
+            break;
+        }
         default:
             return 0;
     }
-- 
2.22.0



More information about the vlc-devel mailing list