Skip to content
Extraits de code Groupes Projets
Vérifiée Valider b0240972 rédigé par Kubat's avatar Kubat
Parcourir les fichiers

Correct segfault

parent 2b82d5af
Aucune branche associée trouvée
Aucune étiquette associée trouvée
1 requête de fusion!102Modules
Ce commit fait partie de la requête de fusion !102. Les commentaires créés ici seront créés dans le contexte de cette requête de fusion.
...@@ -14,7 +14,7 @@ struct module_reg { ...@@ -14,7 +14,7 @@ struct module_reg {
const char *name; const char *name;
union { union {
reg_func func; reg_func func;
struct module_reg *obj; struct module_reg **obj; /* First item of the array */
}; };
}; };
...@@ -29,7 +29,7 @@ struct lkt_module { ...@@ -29,7 +29,7 @@ struct lkt_module {
#define REG_BEGIN(reg) struct module_reg reg[] = { #define REG_BEGIN(reg) struct module_reg reg[] = {
#define REG_ADD(f) { .name = #f, .func = f }, #define REG_ADD(f) { .name = #f, .func = f },
#define REG_ADD_NAMED(n, f) { .name = n, .func = f }, #define REG_ADD_NAMED(n, f) { .name = n, .func = f },
#define REG_REGISTER(n, s) { .name = n, .obj = s }, #define REG_REGISTER(n, s) { .name = n, .obj = &s },
#define REG_END() { .name = NULL, .func = NULL } }; #define REG_END() { .name = NULL, .func = NULL } };
#define REG_DEFINE(reg) struct module_reg reg* = NULL; #define REG_DEFINE(reg) struct module_reg reg* = NULL;
......
...@@ -24,9 +24,9 @@ void * ...@@ -24,9 +24,9 @@ void *
__reg_get(struct module_reg *reg, const char *name) __reg_get(struct module_reg *reg, const char *name)
{ {
int i; int i;
for (i = 0; reg[i].name && reg[i].obj; ++i) { for (i = 0; (reg + i)->name && (reg + i)->obj; ++i) {
if (STR_MATCH(reg[i].name, name)) if (STR_MATCH((reg + i)->name, name))
return reg[i].obj; return (reg + i)->obj;
} }
return NULL; return NULL;
} }
...@@ -35,9 +35,9 @@ reg_func ...@@ -35,9 +35,9 @@ reg_func
__reg_func(struct module_reg *reg, const char *name) __reg_func(struct module_reg *reg, const char *name)
{ {
int i; int i;
for (i = 0; reg[i].name && reg[i].func; ++i) { for (i = 0; (reg + i)->name && (reg + i)->func; ++i) {
if (STR_MATCH(reg[i].name, name)) if (STR_MATCH((reg + i)->name, name))
return reg[i].func; return (reg + i)->func;
} }
return NULL; return NULL;
} }
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter