PL_get_chars does not play nice.
This commit is contained in:
parent
16341a3a0c
commit
a89336a555
@ -549,7 +549,8 @@ X_API int PL_get_chars(term_t l, char **sp, unsigned flags)
|
|||||||
/* this is not enough!!! */
|
/* this is not enough!!! */
|
||||||
snprintf(*sp,BUF_SIZE,"%ls",RepAtom(at)->WStrOfAE);
|
snprintf(*sp,BUF_SIZE,"%ls",RepAtom(at)->WStrOfAE);
|
||||||
} else {
|
} else {
|
||||||
*sp = RepAtom(at)->StrOfAE;
|
char *s = RepAtom(at)->StrOfAE;
|
||||||
|
strncpy(tmp,s,BUF_SIZE);
|
||||||
}
|
}
|
||||||
} else if (IsNumTerm(t)) {
|
} else if (IsNumTerm(t)) {
|
||||||
if (IsFloatTerm(t)) {
|
if (IsFloatTerm(t)) {
|
||||||
@ -598,10 +599,12 @@ X_API int PL_get_chars(term_t l, char **sp, unsigned flags)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (flags & BUF_MALLOC) {
|
if (flags & BUF_MALLOC) {
|
||||||
char *nbf = YAP_AllocSpaceFromYap(strlen(tmp)+1);
|
size_t sz = strlen(tmp);
|
||||||
if (nbf == NULL)
|
char *nbf = YAP_AllocSpaceFromYap(sz+1);
|
||||||
|
if (!nbf)
|
||||||
return 0;
|
return 0;
|
||||||
strncpy(nbf,tmp,BUF_SIZE);
|
strncpy(nbf,tmp,sz+1);
|
||||||
|
free(tmp);
|
||||||
*sp = nbf;
|
*sp = nbf;
|
||||||
}
|
}
|
||||||
return 1;
|
return 1;
|
||||||
|
Reference in New Issue
Block a user