I would have to see the context your code is in to tell you if this is what causes the problem, bot you should always set the pointer to NULL after freeing it:
if (path != NULL)
{
free(path);
path = NULL;
}
EDIT:
By context I mean the control flow: if the free can be called more than once, if it was in a loop, if RevertToSelf can also access (free) the path variable, if the path is freed in the "do some usefull work" part.