signal handling SWI style.

This commit is contained in:
Vítor Santos Costa
2010-06-17 08:20:34 +01:00
parent 3631439be9
commit cf90ace3e1
3 changed files with 160 additions and 2 deletions

View File

@@ -203,12 +203,36 @@ _PL_unify_atomic(term_t t, PL_atomic_t a)
word lookupAtom(const char *s, size_t len)
{
return (word)YAP_LookupAtom(s);
if (len >= strlen(s)) {
return (word)YAP_LookupAtom(s);
} else {
char * buf = PL_malloc(len+1);
word out;
if (!buf)
return 0;
strncpy(buf,s,len);
out = (word)YAP_LookupAtom(buf);
PL_free(buf);
return out;
}
}
atom_t lookupUCSAtom(const pl_wchar_t *s, size_t len)
{
return (atom_t)YAP_LookupWideAtom(s);
if (len >= wcslen(s)) {
return (atom_t)YAP_LookupWideAtom(s);
} else {
pl_wchar_t * buf = PL_malloc((len+1)*sizeof(pl_wchar_t));
word out;
if (!buf)
return 0;
wcsncpy(buf,s,len);
out = (word)YAP_LookupWideAtom(buf);
PL_free(buf);
return out;
}
}