diff --git a/src/builtin.cmod b/src/builtin.cmod index 4895c8271f0e8154205c72cc0729896030302770..1143bc625abe7e1586d674e91431a1298f2bba96 100644 --- a/src/builtin.cmod +++ b/src/builtin.cmod @@ -3155,6 +3155,14 @@ PIKECLASS Buffer struct Buffer_struct *str = THIS; int init_from_arg0 = 0, j; + for (j=0; j < args; j++) { + if (TYPEOF(Pike_sp[j-args]) == PIKE_T_STRING) { + } else if ((TYPEOF(Pike_sp[j-args]) != PIKE_T_OBJECT) || + (Pike_sp[j-args].u.object->prog != Buffer_program)) { + SIMPLE_BAD_ARG_ERROR("add", j+1, "string|String.Buffer"); + } + } + if (!str->str.s && args) { ptrdiff_t sum = 0; int shift = 0; @@ -3162,9 +3170,6 @@ PIKECLASS Buffer struct pike_string *a; if (TYPEOF(Pike_sp[j-args]) == PIKE_T_STRING) { a = Pike_sp[j-args].u.string; - } else if ((TYPEOF(Pike_sp[j-args]) != PIKE_T_OBJECT) || - (Pike_sp[j-args].u.object->prog != Buffer_program)) { - SIMPLE_BAD_ARG_ERROR("add", j+1, "string|String.Buffer"); } else { a = OBJ2_BUFFER(Pike_sp[j-args].u.object)->str.s; if (!a) continue;