fix deadlock
This commit is contained in:
parent
555d146dc5
commit
699dcfe6eb
@ -65,11 +65,9 @@ Term Yap_StringToNumberTerm(char *s, encoding_t *encp) {
|
|||||||
GLOBAL_Stream[sno].encoding = *encp;
|
GLOBAL_Stream[sno].encoding = *encp;
|
||||||
else
|
else
|
||||||
GLOBAL_Stream[sno].encoding = LOCAL_encoding;
|
GLOBAL_Stream[sno].encoding = LOCAL_encoding;
|
||||||
UNLOCK(GLOBAL_Stream[sno].streamlock);
|
|
||||||
while (*s && isblank(*s++))
|
while (*s && isblank(*s++))
|
||||||
;
|
;
|
||||||
t = Yap_scan_num(GLOBAL_Stream + sno);
|
t = Yap_scan_num(GLOBAL_Stream + sno);
|
||||||
GLOBAL_Stream[sno].status = Free_Stream_f;
|
|
||||||
if (t == TermNil) {
|
if (t == TermNil) {
|
||||||
CACHE_REGS
|
CACHE_REGS
|
||||||
int sign = 1;
|
int sign = 1;
|
||||||
@ -86,7 +84,7 @@ Term Yap_StringToNumberTerm(char *s, encoding_t *encp) {
|
|||||||
} else {
|
} else {
|
||||||
return MkFloatTerm(-INFINITY);
|
return MkFloatTerm(-INFINITY);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (strcmp(s, "nan") == 0) {
|
if (strcmp(s, "nan") == 0) {
|
||||||
if (sign > 0) {
|
if (sign > 0) {
|
||||||
return MkFloatTerm(NAN);
|
return MkFloatTerm(NAN);
|
||||||
@ -95,6 +93,8 @@ Term Yap_StringToNumberTerm(char *s, encoding_t *encp) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Yap_CloseStream(sno);
|
||||||
|
UNLOCK(GLOBAL_Stream[sno].streamlock);
|
||||||
return t;
|
return t;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user