erkyrath / quixe

A Glulx VM interpreter written in Javascript
http://eblong.com/zarf/glulx/
MIT License
169 stars 33 forks source link

Resizing browser on Inform 7 example Bronze results in red error 'gli_put_char: window has pending line request' #23

Closed BroadcastGames closed 7 years ago

BroadcastGames commented 7 years ago

I compiled Bronze to Glulx and it's available here with a live-link to resulting gblorb:

https://drive.google.com/uc?export=download&id=0B452Xi1yb0BTQ2xEZ1FuQ0xVbEE

You can open live off the internet using this link:

http://eblong.com/zarf/glulx/quixe/quixe/play-remote.html?story=https%3A%2F%2Fdrive.google.com%2Fuc%3Fexport%3Ddownload%26id%3D0B452Xi1yb0BTQ2xEZ1FuQ0xVbEE&enter=Play+it%21

The issue is that when you resize the window while Bronze is waiting at the first prompt, this red error message appears on top of Quixe:

 Quixe run: gli_put_char: window has pending line request

This happens in both latest Chrome and Firefox that I tested. Thank you.

erkyrath commented 7 years ago

I have not looked at the code, but this is almost certainly a game bug. (Or a bug in an extension used by the game.)

erkyrath commented 7 years ago

Having taken a look at the code...

(I am looking at this version of Bronze updated for 6M62: https://github.com/I7-Standard-Examples/Bronze )

This is a bug occurring in Glulx Entry Points, but I don't know if it's a bug in GEP or a bad interaction between that and game code. It may be a known, fixed bug -- this repo contains "Version 10/150620 of Glulx Entry Points".

The stack trace at the crash point is listed in https://gist.github.com/erkyrath/c69e4e55b9a254b835cf14fc0d76b678 .

Summary: within the debounce arrange event rule, the library tries to "follow the glulx input handling rules for the current glk event". I7 decides this would be a great time to print a newline, because I7 loves to throw newlines in between rulebooks based on criteria that no mortal will ever understand. Printing is not allowed at this point, so boom.

@curiousdannii, you may want to file this as a GEP bug (if it's not already known).

curiousdannii commented 7 years ago

@erkyrath The debounce code is commented out in the current version of GEP, and when I eventually implement it, will do so in a stand alone extension.