I’ve been having problems with the 6.12 library. It crashes out of my game when it doesn’t know who “her” is. “Him” works fine for some reason, but if you start up a game and “ask her about stuff” the game will fatal error.
6.12 has had two minor updates. It’s now at 6.12.2. Could I get the source code and compiled zcode? What operating system are you using and how did you install the Inform6 compiler and library?
I’ve found this bug on 6.12.1 and 6.12.2, I’ve also compiled on Windows and Mac and had the error on both.
I’ve set up my folder using Roger Firth’s set up, and I download 6.33 off the archive and put it in the Base Library along with the update 6.12 files. Basically all the files are in the Base folder that the batch file is calling.
I’ll PM you the files, thanks for looking into this - D
Thanks for the test game binary and source. I’ve confirmed there is a problem in the latest Library code. My initial guess is there’s some sort of longstanding bug in the handling of “her” and other feminine pronouns. My post at Ignoring fatal errors in Zcode dealt with a similar Library bug in Balances as compiled with 6/3. There, TAKE HER would trigger the bug. I did some preliminary testing and found that a bare game with no feminine modifiers of any kind would also show the problem.
Gosh, I feel bad. I would have reported it a year or so ago, but I thought the problem was with my code. So Thursday night I stripped everything else away to see it I could recreate it, which happened. A year ago, after I found the bug, I tried Illuminismo Iniziato which is 6.33/6.12.1, but that game doesn’t have the problem, so I really thought it was my code.
I don’t know why Illuminismo Iniziato works, but I have found that with more than just a bare game this problem will arise. My game is coming in at around 385k in strict and I can recreate it.
I hope it’s an easy fix, I’d like to update the library in my project.
The trouble appears to start in parser.h in the block of code beginning at line 2782. There, the parser checks the current pronoun against a list of assorted language descriptors: my, this, these, that, those, his, her, their, its, the, a, an, some, lit, lighted, unlit. If HER is used as in ASK HER ABOUT STUFF, then it appears that this block is incorrectly treating HER as a possessive pronoun (akin to HIS) rather than an object pronoun (akin to HIM).
I can’t get a game to abort with a fatal error when typing ASK HER ABOUT STUFF. I just got three complaints about attempting to test “in” or “notin” on a routine. Could you tar up the directory where you put the compiler and library source code and send that to me?
I can’t help but think there may be three bugs: one causing the fatal error, one causing the “in” or “notin” test complaint, and a third in the compiler itself that may or may not be interacting with the first two bugs.
I fixed the “in or notin” test complaint. It was easy once I traced where the error happened, but I still want to know why the fatal error you observed occurred.
When I did a trace on it, it made a call 4 times. One would kick back the right response, coming out of the Ask routine. Then the other three would trigger AskFor, AskTo, AskTo. It was failing on those. Also, the fatal error wouldn’t happen if it was run in Strict.
I think the problem is deeper than this, something else is going on. The problem is fixed in a dummy game, but it still persists in a larger game. I do use Ask creature ‘about’ scope=TopicScope, so I changed scope=TopicScope to topic, deleted all my Scope Routines and I still get a fatal error if I don’t run it in Strict. It’s Library v6.12.3pre.
I’ve managed to get it compiled with strict turned off. Fatal error occurs before the fix, but not afterwards. After tracing where the error happens, I’m convinced that the same line is the culprit.
Late to the game here, so to speak, but I remember checking the bugs website and I applied some fixes to my local library in early 2018. I think David and I had talked about some issues too, but I can’t remember if this was one of them.