On Thu, 10 Apr 2008 10:53:31 -0700
[EMAIL PROTECTED] (via RT)
<[EMAIL PROTECTED]> wrote:
> # New Ticket Created by [EMAIL PROTECTED]
> # Please include the string: [perl #52710]
> # in the subject line of all future correspondence about this issue.
> # <URL: http://rt.perl.org/rt3/Ticket/Display.html?id=52710 >
>
>
> Hey,
>
> I *thought* I'd try and clean up an easy one, so I took
> src/key.c
> src/key.c: In function `key_integer':
> src/key.c:368: warning: switch missing default case
>
> After a little poking I tracked the rest of the Key_xxxx_FLAG s down
> to include/parrot/key.h (and pobj.h) [1] and so I rearrainged the
> case stmt to cover them all (noting the TODO on slices, I separated
> those), putting in the current default behavior for everything that
> wasn't already covered and then adding a default branch w/ an
> exception (taken from the next sub ... ). This broke iterator.t tests
> and it appears to be due to a missing (?) flag value of '8' for
> switch test switch (PObj_get_FLAGS(key) & KEY_type_FLAGS) {
>
> So ... either there's a missing KEY_xxxx_FLAG or something. One hint
> is in src/packdump.c [3] which would say the '8' is an 'is_string'
> flag? I've not yet been able to track backwards (my debugging is
> painfully slow w/ printf's and re-makes) to see who's calling w/ the
> funny flag value but I thought I'd ask here to see if anybody had an
> answer.
>
> Thanks.
Hi,
Here's the code you posted in [2], in unified diff format, without the
C++-style comments and white space changes. It looks like your mail
client screwed up the white space, which made it pretty hard to
see what was changed... please read docs/submissions.pod when you have a
chance, the tips contained within make this kind of thing a lot easier.
Thanks!
Mark
Index: src/key.c
===================================================================
--- src/key.c (revision 26901)
+++ src/key.c (working copy)
@@ -322,7 +322,18 @@
return string_to_int(interp, s_reg);
}
/* TODO check for slice_FLAGs */
+ case KEY_start_slice_FLAG:
+ case KEY_end_slice_FLAG:
+ case KEY_inf_slice_FLAG:
+ return VTABLE_get_integer(interp, key);
+ case KEY_number_FLAG:
+ return VTABLE_get_integer(interp, key);
+ default:
+ real_exception(interp, NULL, INVALID_OPERATION,
+ "Key_integer %d %d %d not a valid flag!\n",
VTABLE_get_integer(interp,
+ key), PObj_get_FLAGS(key), PObj_get_FLAGS(key) &
KEY_type_FLAGS);
}
+
}
return VTABLE_get_integer(interp, key);