#include <unistd.h>
#include <assert.h>
#include <stdlib.h>
+#include <errno.h>
#include "putty.h"
#include "ssh.h"
int len;
sfree(disp->hostname);
+ disp->hostname = NULL;
len = 128;
do {
len *= 2;
- disp->hostname = snewn(len, char);
- if (gethostname(disp->hostname, len) < 0) {
+ disp->hostname = sresize(disp->hostname, len, char);
+ if ((gethostname(disp->hostname, len) < 0) &&
+ (errno != ENAMETOOLONG)) {
+ sfree(disp->hostname);
disp->hostname = NULL;
return;
}