Bug fixes

This commit is contained in:
Justin Ethier 2015-10-13 22:51:25 -04:00
parent 338d46ac9e
commit 738fe0439e
2 changed files with 15 additions and 7 deletions

View file

@ -193,11 +193,13 @@ typedef struct {gc_header_type hdr; tag_type tag; int len; char *str;} string_ty
#define make_string(cs, s) string_type cs; \
{ int len = strlen(s); cs.tag = string_tag; cs.len = len; \
cs.str = alloca(sizeof(char) * (len + 1)); \
strcpy(cs.str, s);}
memcpy(cs.str, s, len + 1);}
#define make_string_with_len(cs, s, length) string_type cs; \
{ cs.tag = string_tag; cs.len = length; \
{ int len = length; \
cs.tag = string_tag; cs.len = len; \
cs.str = alloca(sizeof(char) * (len + 1)); \
strcpy(cs.str, s);}
memcpy(cs.str, s, len); \
cs.str[len + 1] = '\0';}
#define make_string_noalloc(cs, s, length) string_type cs; \
{ cs.tag = string_tag; cs.len = length; \
cs.str = s; }

View file

@ -856,7 +856,8 @@ object Cyc_number2string(object cont, object n) {
} else {
Cyc_rt_raise2("number->string - Unexpected object", n);
}
make_string_noalloc(str, buffer, strlen(buffer));
//make_string_noalloc(str, buffer, strlen(buffer));
make_string(str, buffer);
return_closcall1(cont, &str);
}
@ -891,7 +892,8 @@ object Cyc_list2string(object cont, object lst){
}
buf[i] = '\0';
{ make_string_noalloc(str, buf, i);
//{ make_string_noalloc(str, buf, i);
{ make_string(str, buf);
return_closcall1(cont, &str);}
}
@ -960,14 +962,12 @@ integer_type Cyc_string_cmp(object str1, object str2) {
}
void dispatch_string_91append(int _argc, object clo, object cont, object str1, ...) {
string_type result;
va_list ap;
va_start(ap, str1);
Cyc_string_append_va_list(_argc - 1);
}
object Cyc_string_append(object cont, int _argc, object str1, ...) {
string_type result;
va_list ap;
va_start(ap, str1);
Cyc_string_append_va_list(_argc);
@ -1042,6 +1042,12 @@ object Cyc_substring(object cont, object str, object start, object end) {
{
make_string_with_len(sub, raw + s, e - s);
//string_type sub;
//{ int len = e - s;
// sub.tag = string_tag; sub.len = len;
// sub.str = alloca(sizeof(char) * (len + 1));
// memcpy(sub.str, raw + s, len);
// sub.str[len + 1] = '\0';}
return_closcall1(cont, &sub);
}
}