1.1 --- a/templates/native/str.c Thu Mar 23 16:40:57 2017 +0100
1.2 +++ b/templates/native/str.c Thu Mar 23 23:36:32 2017 +0100
1.3 @@ -37,7 +37,7 @@
1.4 /* _data, other interpreted as string */
1.5 char *s = _data->strvalue;
1.6 char *o = other->strvalue;
1.7 - int ss = _size->intvalue, os = othersize->intvalue;
1.8 + int ss = __TOINT(*_size), os = __TOINT(*othersize);
1.9 int n = ss + os;
1.10 char *r = (char *) __ALLOCATE(n + 1, sizeof(char));
1.11
1.12 @@ -50,9 +50,9 @@
1.13
1.14 __attr __fn_native_str_str_chr(__attr __args[])
1.15 {
1.16 - __attr * const _data = &__args[1];
1.17 - /* _data interpreted as int */
1.18 - int n = _data->intvalue;
1.19 + __attr * const data = &__args[1];
1.20 + /* data interpreted as int */
1.21 + int n = __TOINT(*data);
1.22 char *s = (char *) __ALLOCATE(2, sizeof(char));
1.23
1.24 s[0] = (char) n;
1.25 @@ -112,12 +112,12 @@
1.26 __attr * const step = &__args[4];
1.27 /* _data interpreted as string */
1.28 char *s = _data->strvalue, *sub;
1.29 - /* start.__data__ interpreted as int */
1.30 - int istart = __load_via_object(start->value, __data__).intvalue;
1.31 - /* end.__data__ interpreted as int */
1.32 - int iend = __load_via_object(end->value, __data__).intvalue;
1.33 - /* step.__data__ interpreted as int */
1.34 - int istep = __load_via_object(step->value, __data__).intvalue;
1.35 + /* start interpreted as int */
1.36 + int istart = __TOINT(*start);
1.37 + /* end interpreted as int */
1.38 + int iend = __TOINT(*end);
1.39 + /* step interpreted as int */
1.40 + int istep = __TOINT(*step);
1.41
1.42 /* Calculate the size of the substring. */
1.43 size_t resultsize = ((iend - istart - (istep > 0 ? 1 : -1)) / istep) + 1;