summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSverker Eriksson <sverker@erlang.org>2022-11-17 13:23:50 +0100
committerSverker Eriksson <sverker@erlang.org>2022-11-17 13:23:50 +0100
commitb24f783b0a21e39f2cba5630dc24086d44cd9a1d (patch)
treeaa50ff5804c9336ea5fce2278dad61836fd500b6
parent190f6826ef2623b0025d3b18ee96991a0802d6f9 (diff)
parente374e3feea4194480746fe35e80c0e3fbe65d552 (diff)
downloaderlang-b24f783b0a21e39f2cba5630dc24086d44cd9a1d.tar.gz
Merge branch 'sverker/erts/erlang-display-stdin-freebsd'
-rw-r--r--erts/emulator/beam/bif.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/erts/emulator/beam/bif.c b/erts/emulator/beam/bif.c
index 4aaf4b4649..5ccb62800d 100644
--- a/erts/emulator/beam/bif.c
+++ b/erts/emulator/beam/bif.c
@@ -4210,7 +4210,13 @@ BIF_RETTYPE display_string_2(BIF_ALIST_2)
}
#if defined(HAVE_SYS_IOCTL_H) && defined(TIOCSTI)
else if (ERTS_IS_ATOM_STR("stdin", BIF_ARG_1)) {
- fd = open("/proc/self/fd/0",0);
+ const char stdin_fname[] = "/dev/tty";
+ fd = open(stdin_fname,0);
+ if (fd < 0) {
+ fprintf(stderr,"failed to open %s (%s)\r\n", stdin_fname,
+ strerror(errno));
+ goto error;
+ }
}
#endif
#endif
@@ -4275,7 +4281,8 @@ error: {
char *errnostr = erl_errno_id(errno);
#endif
BIF_P->fvalue = am_atom_put(errnostr, strlen(errnostr));
- erts_free(ERTS_ALC_T_TMP, (void *) str);
+ if (temp_alloc)
+ erts_free(ERTS_ALC_T_TMP, (void *) temp_alloc);
BIF_ERROR(p, BADARG | EXF_HAS_EXT_INFO);
}
}