flush
[m6w6/ext-psi] / src / parser.h
index 28913f6dbcd84015f9652120fd63629988fc345c..9ec15b9b7825ba47ab7c88e716bd1b32248032fb 100644 (file)
@@ -336,7 +336,7 @@ typedef union impl_val {
 static inline impl_val *deref_impl_val(impl_val *ret_val, decl_var *var) {
        unsigned i;
 
-       for (i = 0; i < var->arg->var->pointer_level; ++i) {
+       if (var->arg->var != var) for (i = 0; i < var->pointer_level; ++i) {
                ret_val = *(void **) ret_val;
        }
        return ret_val;
@@ -367,7 +367,7 @@ typedef struct impl_var {
 
 static inline impl_var *init_impl_var(char *name, int is_reference) {
        impl_var *var = calloc(1, sizeof(*var));
-       var->name = (char *) strdup((const char *) name);
+       var->name = strdup(name);
        var->reference = is_reference;
        return var;
 }
@@ -382,10 +382,10 @@ typedef struct impl_def_val {
        char *text;
 } impl_def_val;
 
-static inline impl_def_val *init_impl_def_val(PSI_Token *T) {
+static inline impl_def_val *init_impl_def_val(token_t t, char *text) {
        impl_def_val *def = calloc(1, sizeof(*def));
-       def->type = T->type;
-       def->text = strdup(T->text);
+       def->type = t;
+       def->text = strdup(text);
        return def;
 }