do {
buffer = g_realloc (buffer, s);
r = getcwd (buffer, s);
fail = (r == NULL && errno == ERANGE);
fail = (r == NULL && (errno == ERANGE || errno == 0));
if (fail) {
s <<= 1;
}