Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Lisp exception when executing a doit box that contains a transparent sprite box #104

Open
rigdern opened this issue Jul 10, 2024 · 1 comment

Comments

@rigdern
Copy link

rigdern commented Jul 10, 2024

Repro steps

I reproed this with Boxer 3.4.19 2024-06-24.

  1. Create a doit box named go
  2. Inside of the doit box, create a sprite box with option-s
  3. Make the sprite box transparent by putting the cursor inside of it and choosing the "Box > Export Names" menu item.
  4. Give the doit box something trivial to return by making its last line 0
  5. Outside of the doit box, write a new line with just go on it
  6. Eval that line to run go

Unexpected result: A Common Lisp exception is thrown:

Lisp Error:
  #(BOXER::VALID-VALUE-BOX-INTERFACE 0.0 #<DATA-BOX 0.00 > #<DATA-BOX  [] [] []... > BOXER::X-POSITION)
  fell through ETYPECASE expression inside BOXER:VIRTUAL-COPY.
Wanted one of (BOXER:VIRTUAL-COPY BOXER::VIRTUAL-PORT BOXER::BOX NUMBER SYMBOL BOXER::FOREIGN-DATA).

Alternately, you can repro the issue with doit box with transparent sprite repro.box.zip. Screenshot:
image

@sgithens
Copy link
Member

I took an initial triage/look at this, and in defun virtual-copy added a case for simple-vector which simple returns itself, which seems to work for this a few other conditions I tried, but because vc affects a number of things this needs to be thought through a bit more, and it also dovetails with some of our other current quandries like "what should happen if you evaluate a sprite or graphics box" and "should it be possible to flip them to doit boxes or not".

If after some more testing and work through, this looks ok, I'll go ahead and commit it to at least resolve this crash for now.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants