В xgetcwd() надо локальную переменную rs инициализировать в NULL.
Исправьте пожалуйста, кто будет пользовать:
rs = NULL;
сразу после
len = 0;
вставить.
--
Г.А.
Grigoriy A. Sitkarev пишет:
> Много замечаний конечно.
> char *
> xgetcwd(void)
> {
> #define CWD_GROW_UP 32
>     size_t len;
>     char *rs, *s;
> 
>     len = 0;
> 
>     do {
>         rs = realloc(rs, len+CWD_GROW_UP);
>         if (rs == NULL) {
>             fprintf(stderr, "xgetcwd: out of memory\n");
>             exit(1);
>         }
>         len += CWD_GROW_UP;
>         s = getcwd(rs, len);
>     } while ((s == NULL) && (errno == ERANGE));
> 
>     if (s == NULL) {
>         fprintf(stderr, "xgetcwd: can't get current dir: %s\n",
>                 strerror(errno));
>         exit(1);
>     }
> 
>     return rs;
> }
>