/*
* base code for various Tcl extensions
- * Copyright 2006 Ian Jackson
+ * Copyright 2006-2012 Ian Jackson
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
va_list al;
char *p;
const char *part;
- int l, pl;
+ int l;
+ size_t pl;
va_start(al,o);
- for (l=0; (part= va_arg(al, const char*)); )
- l+= va_arg(al, int);
+ for (l=0; (part= va_arg(al, const char*)); ) {
+ pl= va_arg(al, size_t);
+ assert(pl <= INT_MAX/2 - l);
+ l += pl;
+ }
va_end(al);
o->length= l;
va_start(al,o);
for (p= o->bytes; (part= va_arg(al, const char*)); p += pl) {
- pl= va_arg(al, int);
+ pl= va_arg(al, size_t);
memcpy(p, part, pl);
}
va_end(al);