summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--lib/fs.c2
-rw-r--r--types.c9
2 files changed, 8 insertions, 3 deletions
diff --git a/lib/fs.c b/lib/fs.c
index 5266ce9..e00f7fa 100644
--- a/lib/fs.c
+++ b/lib/fs.c
@@ -838,7 +838,7 @@ uc_fs_isatty(uc_vm_t *vm, size_t nargs)
if (fd == -1)
err_return(errno);
- return ucv_boolean_new(isatty(fd));
+ return ucv_boolean_new(isatty(fd) == 1);
}
/**
diff --git a/types.c b/types.c
index 5758f74..d601479 100644
--- a/types.c
+++ b/types.c
@@ -1998,7 +1998,7 @@ ucv_compare(int how, uc_value_t *v1, uc_value_t *v2, int *deltap)
uint64_t u1, u2;
int64_t n1, n2;
double d1, d2;
- int8_t delta;
+ int delta;
/* at least one operand is null and we compare for equality or inequality ... */
if ((!v1 || !v2) && (how == I_EQ || how == I_NE)) {
@@ -2015,7 +2015,12 @@ ucv_compare(int how, uc_value_t *v1, uc_value_t *v2, int *deltap)
/* ... both operands are of the same, non-scalar type... */
if (t1 == t2 && !ucv_is_scalar(v1)) {
/* ... compare memory addrs */
- delta = (intptr_t)v1 - (intptr_t)v2;
+ if ((uintptr_t)v1 == (uintptr_t)v2)
+ delta = 0;
+ else if ((uintptr_t)v1 < (uintptr_t)v2)
+ delta = -1;
+ else
+ delta = 1;
}
/* ... operands are of different type or at least one is scalar... */