Ошибка сегментации: 11 при попытке изменить структуру - PullRequest
0 голосов
/ 13 марта 2012

Я пытаюсь сохранить свой параметр char * в элементе данных указателя структуры.Но я получаю ошибку сегментации: 11, когда я пытаюсь это сделать.

void macro_set(char *name, char *body)
{
    verify(body != NULL, "null arg body");

    bool  nameExists = false;

    if(macro_list.name == NULL)
    {
        macro_list.name = Strdup(name);
        macro_list.body = Strdup(body);
    }
    else
    {
        struct macro *current = &macro_list;

        for(; current != NULL; current = current->next)
        {

          if(strcmp(name, current->name) == 0)
          {
              current->body = Strdup(body);
              nameExists = true;
          }
        }

        if(!nameExists)
        {
            current->name = Strdup(name);           
        } 
    } 
}

Ошибка возникает, когда я пытаюсь сохранить имя в current-> name.Спасибо всем, кто может помочь!

1 Ответ

3 голосов
/ 13 марта 2012

Если ни один из элементов macro_list не соответствует name, цикл for завершится с

nameExists = false и
current = NULL.

Тогда последующее if будет истинным, а строка

current->name = Strdup(name);

эффективно присваивает

((struct macro *) NULL)->name = Strdup(name);
...