@@ -83,6 +83,7 @@ makeCWrapper() {
8383
8484 printf " %s\n" " #include <unistd.h>"
8585 printf " %s\n" " #include <stdlib.h>"
86+ [ -z " $uses_concat3 " ] || printf " %s\n" " #include <string.h>"
8687 [ -z " $uses_concat3 " ] || printf " \n%s\n" " $( concat3Fn) "
8788 [ -z " $uses_prefix " ] || printf " \n%s\n" " $( setEnvPrefixFn) "
8889 [ -z " $uses_suffix " ] || printf " \n%s\n" " $( setEnvSuffixFn) "
@@ -165,9 +166,9 @@ escapeStringLiteral() {
165166
166167concat3Fn () {
167168 printf " %s\n" ' char *concat3(char *x, char *y, char *z) {'
168- printf " %s\n" ' int xn = 0; while(x[++xn] );'
169- printf " %s\n" ' int yn = 0; while(y[++yn] );'
170- printf " %s\n" ' int zn = 0; while(z[++zn] );'
169+ printf " %s\n" ' int xn = strlen(x );'
170+ printf " %s\n" ' int yn = strlen(y );'
171+ printf " %s\n" ' int zn = strlen(z );'
171172 printf " %s\n" ' char *res = malloc(sizeof(*res)*(xn + yn + zn + 1));'
172173 printf " %s\n" ' for (int i = 0; i < xn; ++i) res[i] = x[i];'
173174 printf " %s\n" ' for (int i = 0; i < yn; ++i) res[xn+i] = y[i];'
@@ -193,4 +194,4 @@ setEnvSuffixFn() {
193194 printf " %s\n" ' setenv(env, val, 1);'
194195 printf " %s\n" ' if (existing) free(val);'
195196 printf " %s\n" ' }'
196- }
197+ }
0 commit comments