Let's try "patch that compiles"...

/s
RCS file: /cvs/public/parrot/core.ops,v
retrieving revision 1.143
diff -u -p -r1.143 core.ops
--- core.ops    20 May 2002 17:52:28 -0000      1.143
+++ core.ops    23 May 2002 15:03:31 -0000
@@ -1957,11 +1957,17 @@ inline op pack(inout STR, in INT, in STR
 inline op pack(inout STR, in INT, in INT, in INT) {
     char *c = (char *)&$3, *n;
     STRING *s;
+    INTVAL ln;
     const char *t;
     int i;
     
     s = string_make(interpreter, c, (UINTVAL)$2, NULL, 0, NULL);
     s->flags |= BUFFER_neonate_FLAG;
+    ln = string_length($1);
+    extern void assert();
+    assert($4 <= ln);
+    if (ln < $4 + $2)
+       string_grow(interpreter, $1, $4 + $2 - ln);
+
     /* XXX this is EVIL, use string_replace */
     n = $1->bufstart;
     t = string_to_cstring(interpreter, (s));


Reply via email to