From: Jim M. <ji...@me...> - 2006-05-19 22:07:12
|
Hello, I'm using syck and just got the latest from svn. First, I noticed there are test failures when running `make check': PASS: test-parse Error at [Line 8, Col 18446744073709551615]: syntax error Error at [Line 9, Col 18446744073709551615]: syntax error Error at [Line 14, Col 0]: syntax error Error at [Line 11, Col 18446744073709551615]: syntax error Error at [Line 5, Col 1]: syntax error Error at [Line 8, Col 18446744073709551615]: syntax error ..............FF..................F..F.F..F........ There were 6 failures: 1) YtsSpecificationExamples_7: expected <Chicago Cubs> but was <Mark McGwire> 2) YtsSpecificationExamples_8: expected <20:03:47> but was <20:03:20> 3) YtsSpecificationExamples_28: expected <2001-11-23 15:02:31 -05:00> but was <20 01-11-23 15:01:42 -05:00> 4) YtsSpecificationExamples_31: expected <2001-08-12 09:25:10.00 Z> but was <2001 -08-12 09:25:00.00 Z> 5) YtsSpecificationExamples_33: expected <10> but was <20> 6) YtsSpecificationExamples_36: expected <bearing> but was <pool> !!!FAILURES!!! Runs: 51 Passes: 45 Fails: 6 FAIL: test-yts The problem is that the cs->buffer accumulated by the loop in CuRoundTrip is not terminated by a '\0', so (since the new input is shorter than the previous occupant of that buffer, it looks like this: $7 = 0x52b410 "--- \n- Mark McGwire\n- Sammy Sosa\n- Ken Griffey\n--- \n- Chicago Cubs\n- St Louis Cardinals\niffey\n" It should have a \0 byte after "Ken Griffey\n". Without that, of course, the parser chokes on the line starting with `iffey'. Here's a very kludgey way to fix it. [ I'm sure you can come up with something cleaner, but I can't spend more time on this. ] Index: YTS.c =================================================================== --- YTS.c (revision 234) +++ YTS.c (working copy) @@ -261,6 +261,9 @@ /* Reload the stream and compare */ /* printf( "-- output for %s --\n%s\n--- end of output --\n", tc->name, cs->buffer ); */ + + cs->buffer[cs->length] = '\0'; + CuStreamCompare( tc, cs->buffer, stream ); CuStringFree( cs ); That fixes 5 of the 6 failures above. Thanks for working on syck. Jim Meyering |