[vlc-commits] modules: fix pointer aliasing
Rémi Denis-Courmont
git at videolan.org
Sun Oct 27 19:24:04 CET 2019
vlc | branch: master | Rémi Denis-Courmont <remi at remlab.net> | Sun Oct 27 20:13:28 2019 +0200| [67488437b4c6c6ac2d13e5d923cd3de90946add0] | committer: Rémi Denis-Courmont
modules: fix pointer aliasing
Tree functions return pointers to void pointers.
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=67488437b4c6c6ac2d13e5d923cd3de90946add0
---
src/modules/bank.c | 4 ++--
src/modules/entry.c | 15 +++++++++------
2 files changed, 11 insertions(+), 8 deletions(-)
diff --git a/src/modules/bank.c b/src/modules/bank.c
index 2f85b0776c..275680456b 100644
--- a/src/modules/bank.c
+++ b/src/modules/bank.c
@@ -118,7 +118,7 @@ static int vlc_module_store(module_t *mod)
if (unlikely(cap->name == NULL))
goto error;
- vlc_modcap_t **cp = tsearch(cap, &modules.caps_tree, vlc_modcap_cmp);
+ void **cp = tsearch(cap, &modules.caps_tree, vlc_modcap_cmp);
if (unlikely(cp == NULL))
goto error;
@@ -787,7 +787,7 @@ module_t **module_list_get (size_t *n)
*/
ssize_t module_list_cap (module_t ***restrict list, const char *name)
{
- const vlc_modcap_t **cp = tfind(&name, &modules.caps_tree, vlc_modcap_cmp);
+ const void **cp = tfind(&name, &modules.caps_tree, vlc_modcap_cmp);
if (cp == NULL)
{
*list = NULL;
diff --git a/src/modules/entry.c b/src/modules/entry.c
index c3e64af3d3..70f9a8c932 100644
--- a/src/modules/entry.c
+++ b/src/modules/entry.c
@@ -512,8 +512,7 @@ static int vlc_plugin_gpa_cb(void *ctx, void *tgt, int propid, ...)
sym->name = name;
sym->addr = addr;
- struct vlc_plugin_symbol **symp = tsearch(sym, rootp,
- vlc_plugin_symbol_compare);
+ void **symp = tsearch(sym, rootp, vlc_plugin_symbol_compare);
if (unlikely(symp == NULL))
{ /* Memory error */
free(sym);
@@ -522,7 +521,10 @@ static int vlc_plugin_gpa_cb(void *ctx, void *tgt, int propid, ...)
if (*symp != sym)
{ /* Duplicate symbol */
- assert((*symp)->addr == sym->addr);
+#ifndef NDEBUG
+ const struct vlc_plugin_symbol *oldsym = *symp;
+ assert(oldsym->addr == sym->addr);
+#endif
free(sym);
}
return 0;
@@ -565,13 +567,14 @@ static int vlc_plugin_get_symbol(void *root, const char *name,
return 0;
}
- const struct vlc_plugin_symbol **symp = tfind(&name, &root,
- vlc_plugin_symbol_compare);
+ const void **symp = tfind(&name, &root, vlc_plugin_symbol_compare);
if (symp == NULL)
return -1;
- *addrp = (*symp)->addr;
+ const struct vlc_plugin_symbol *sym = *symp;
+
+ *addrp = sym->addr;
return 0;
}
More information about the vlc-commits
mailing list