diff --git a/log/src/log.c b/log/src/log.c
index b24ac892df21f46d2001634f630fa8dc6b2ba119..a386198606c804f12578896e52b3d3ae0525b84b 100644
--- a/log/src/log.c
+++ b/log/src/log.c
@@ -490,11 +490,16 @@ void log_setmode(const char *s)
 void strwordx(char *buf, char *wrd)
 {
 	size_t i;
-	char STR1[256];
-	char STR2[256];
+	char *STR1;
+	char *STR2;
 
+	STR1 = malloc(strlen(buf+1));
+	STR2 = malloc(strlen(buf+1));
 	strcpy(STR1, strltrim(strrtrim(strcpy(STR2, buf))));
 	strcpy(buf, STR1);
+	free(STR1);
+	free(STR2);
+
 	if (*buf != '"')
 	{
 		strword(buf, wrd);
diff --git a/log/src/utils.c b/log/src/utils.c
index e7c6c196751d68b557bc20dcdbc61ceff3101fef..e3e288bef866bd91b80e21c016fdfd3f9809dd49 100644
--- a/log/src/utils.c
+++ b/log/src/utils.c
@@ -16,11 +16,16 @@ void working()
 
 void getword(char *buf, char *wrd)
 {
-	char STR1[256];
-	char STR2[256];
+	char *STR1;
+	char *STR2;
 
+	STR1 = malloc(strlen(buf+1));
+	STR2 = malloc(strlen(buf+1));
 	strcpy(STR1, strltrim(strrtrim(strcpy(STR2, buf))));
 	strcpy(buf, STR1);
+	free(STR1);
+	free(STR2);
+
 	if (*buf == '"')
 		strwordx(buf, wrd);
 	else
@@ -30,19 +35,6 @@ void getword(char *buf, char *wrd)
 	}
 }
 
-/* char *strcpy_overlap(char *dst, char *src) */
-/* { */
-/*	size_t i = 0; */
-
-/*	do { */
-/*		dst[i] = src[i]; */
-/*		if (src[i++] == '\0') */
-/*			break; */
-/*	} while (1); */
-/*	return dst; */
-/* } */
-
-
 void stamp(long *i)
 {
 	gg.curstamp++;
@@ -103,7 +95,7 @@ void dounits(char *s, double *r)
 }
 
 
-void readreal(char s_[], double *r)
+void readreal(char *s_, double *r)
 {
 	char s[256];
 	long i;