I gave a quick look at the source to find the bug and it seems clear that the code is not organized to catch errors. It starts parsing by looking for a word (not specially a BEGIN) and then accept anything that could follow a word (be it comma, dot, colon or something else).
In other words, there is a strong assumption in the parser,that the file is a valid vcard. I agree that this is a bad assumption but it is one requiring a significant effort to fix. The code is clean so it shouldn't be difficult, just a bit long. I'll forward the bug upstream once I get back to my desktop computer, we'll see if he feels like tackling this issue. Best regards, Tom