pike.git / src / cpp.cmod

version» Context lines:

pike.git/src/cpp.cmod:3681:   {    pop_n_elems (args);    if (use_initial_predefs) {    struct pike_predef_s *tmp;    push_mapping (initial_predefs_mapping());    use_initial_predefs = 0;       while((tmp=first_predef))    {    free(tmp->name); -  free(tmp->value); +     first_predef=tmp->next;    free(tmp);    }    last_predef = 0;    }    else Pike_error ("Initial predefines already taken over.\n");   }      /*! @endmodule    */
pike.git/src/cpp.cmod:3727:    "function(void:mapping(string:string))",    OPT_SIDE_EFFECT, NULL, NULL));    simple_add_constant ("_take_over_initial_predefines", &s, 0);    free_svalue (&s);   }         void add_predefine(const char *s)   {    struct pike_predef_s *tmp=ALLOC_STRUCT(pike_predef_s); -  char * pos=strchr(s,'='); +  size_t len = strlen(s); +  char *pos=strchr(s,'='); +     if(pos)    { -  tmp->name=xalloc(pos-s+1); -  memcpy(tmp->name,s,pos-s); +  tmp->name = xalloc(len+1); +  memcpy(tmp->name, s, len+1);    tmp->name[pos-s]=0;    -  tmp->value=xalloc(s+strlen(s)-pos); -  memcpy(tmp->value,pos+1,s+strlen(s)-pos); +  tmp->value = tmp->name + (pos-s) + 1;    }else{ -  tmp->name=xalloc(strlen(s)+1); -  memcpy(tmp->name,s,strlen(s)+1); +  tmp->name = xalloc(len + 1 + 4); +  memcpy(tmp->name,s,len + 1);    -  tmp->value=xalloc(4); +  tmp->value = tmp->name + len + 1;    memcpy(tmp->value," 1 ",4);    }    tmp->next = NULL; -  +     if (first_predef) {    last_predef->next = tmp;    last_predef = tmp;    }    else first_predef = last_predef = tmp;   }      void exit_cpp(void)   {   #ifdef DO_PIKE_CLEANUP    struct pike_predef_s *tmp;       EXIT;       while((tmp=first_predef))    {    free(tmp->name); -  free(tmp->value); +     first_predef=tmp->next;    free(tmp);    }    free_svalue(&defined_macro_sval);       free_string (efun_str);    free_string (constant_str);    free_string (defined_str);      #endif   }