Patch below removes some evil mucking around in string internals that was in the regular expression engine. All (expected) tests pass on Windows native and Cygwin. (PerlArrays and PerlHashes are still causing segfaults on Windows native.)
--Brent Dax [EMAIL PROTECTED] Configure pumpking for Perl 6 <obra> mmmm. hawt sysadmin chx0rs <lathos> This is sad. I know of *a* hawt sysamin chx0r. <obra> I know more than a few. <lathos> obra: There are two? Are you sure it's not the same one? diff -ur /parrot-cvs/include/parrot/rx.h /parrot/include/parrot/rx.h --- /parrot-cvs/include/parrot/rx.h Thu Jan 10 16:04:56 2002 +++ /parrot/include/parrot/rx.h Thu Jan 10 16:10:24 2002 @@ -59,8 +59,7 @@ STRING *rxP_get_substr(struct Parrot_Interp *, STRING *, INTVAL, INTVAL); #define RX_dUNPACK(pmc) rxinfo *rx=(rxinfo *)pmc->data -/* this one is really quite evil */ -#define RxCurChar(rx) ((char *)rx->string->bufstart)[rx->index] +#define RxCurChar(rx) (char)string_ord(rx->string, rx->index) #define RxCurCharS(rx) rxP_get_substr(interpreter, rx->string, rx->index, 1) #define RxAdvance(rx) RxAdvanceX(rx, 1) diff -ur /parrot-cvs/rx.ops /parrot/rx.ops --- /parrot-cvs/rx.ops Thu Jan 10 16:04:54 2002 +++ /parrot/rx.ops Thu Jan 10 16:12:02 2002 @@ -549,7 +549,7 @@ rx->minlength=$3; for(i=0; i < string_length($2); i++) { - switch(((char *)$2->bufstart)[i]) { + switch((char)string_ord($2, i)) { case 'i': RxCaseInsensitive_on(rx); break; @@ -564,7 +564,7 @@ rx->index=rx->startindex=string_length(rx->string); break; default: - fprintf(stderr, "Unknown regular expression option '%c'.", ((char*)$2->bufstart)[i]); + fprintf(stderr, "Unknown regular expression option +'%c'.", (char)string_ord($2, i)); HALT(); } }