fix overwite
This commit is contained in:
parent
e441f30c4c
commit
0779639baf
9
C/text.c
9
C/text.c
@ -834,14 +834,14 @@ size_t write_buffer(void *s0, seq_tv_t *out, encoding_t enc, int minimal,
|
|||||||
if (!minimal)
|
if (!minimal)
|
||||||
sz *= 4;
|
sz *= 4;
|
||||||
if (out->type & (YAP_STRING_MALLOC)) {
|
if (out->type & (YAP_STRING_MALLOC)) {
|
||||||
out->val.c = malloc(sz);
|
out->val.uc = malloc(sz);
|
||||||
} else if (!(out->type & (YAP_STRING_WITH_BUFFER))) {
|
} else if (!(out->type & (YAP_STRING_WITH_BUFFER))) {
|
||||||
if (ASP - (sz / sizeof(CELL) + 1) > HR + 1024) {
|
if (ASP - (sz / sizeof(CELL) + 1) > HR + 1024) {
|
||||||
out->val.c = Yap_PreAllocCodeSpace();
|
out->val.c = Yap_PreAllocCodeSpace();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
out->val.c = s0;
|
out->val.uc = s0;
|
||||||
}
|
}
|
||||||
if (out->enc == ENC_ISO_UTF8) {
|
if (out->enc == ENC_ISO_UTF8) {
|
||||||
switch (enc) {
|
switch (enc) {
|
||||||
@ -849,17 +849,18 @@ size_t write_buffer(void *s0, seq_tv_t *out, encoding_t enc, int minimal,
|
|||||||
if (out->type & (YAP_STRING_WITH_BUFFER | YAP_STRING_MALLOC)) {
|
if (out->type & (YAP_STRING_WITH_BUFFER | YAP_STRING_MALLOC)) {
|
||||||
char *s = s0;
|
char *s = s0;
|
||||||
size_t n = strlen(s) + 1;
|
size_t n = strlen(s) + 1;
|
||||||
out->val.c[n] = '\0';
|
out->val.uc[n] = '\0';
|
||||||
sz_end = n + 1;
|
sz_end = n + 1;
|
||||||
} else {
|
} else {
|
||||||
sz_end = strlen(out->val.c) + 1;
|
sz_end = strlen(out->val.c) + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case ENC_ISO_LATIN1: {
|
case ENC_ISO_LATIN1: {
|
||||||
unsigned char *s = s0, *lim = s + (max = strnlen(s0, max));
|
unsigned char *s = s0, *lim = s + (max = strnlen(s0, max));
|
||||||
unsigned char *cp = s, *buf0, *buf;
|
unsigned char *cp = s, *buf0, *buf;
|
||||||
|
|
||||||
buf = buf0 = s0;
|
buf = buf0 = out->val.uc;
|
||||||
if (!buf)
|
if (!buf)
|
||||||
return -1;
|
return -1;
|
||||||
while (*cp && cp < lim) {
|
while (*cp && cp < lim) {
|
||||||
|
Reference in New Issue
Block a user