Author: Tim Felgentreff <[email protected]>
Branch: 
Changeset: r521:e848891e0606
Date: 2013-12-06 17:22 +0100
http://bitbucket.org/pypy/lang-smalltalk/changeset/e848891e0606/

Log:    workaround: cursor setting doesn't currently work in modern images

diff --git a/spyvm/primitives.py b/spyvm/primitives.py
--- a/spyvm/primitives.py
+++ b/spyvm/primitives.py
@@ -679,7 +679,7 @@
             # mask is a form object
             w_contents = w_mask.fetch(interp.space, 0)
             if isinstance(w_contents, model.W_WordsObject):
-                w_mask = w_contents.words
+                mask_words = w_contents.words
             else:
                 raise PrimitiveFailedError
         else:
@@ -691,14 +691,18 @@
     height = interp.space.unwrap_int(w_rcvr.fetch(interp.space, 2))
     depth = interp.space.unwrap_int(w_rcvr.fetch(interp.space, 3))
     hotpt = wrapper.PointWrapper(interp.space, w_rcvr.fetch(interp.space, 4))
-    display.SDLCursor.set(
-        w_bitmap.words,
-        width,
-        height,
-        hotpt.x(),
-        hotpt.y(),
-        mask_words=mask_words
-    )
+    if not interp.image.is_modern:
+        display.SDLCursor.set(
+            w_bitmap.words,
+            width,
+            height,
+            hotpt.x(),
+            hotpt.y(),
+            mask_words=mask_words
+        )
+    else:
+        # TODO: Implement
+        pass
 
     interp.space.objtable['w_cursor'] = w_rcvr
     return w_rcvr
diff --git a/spyvm/shadow.py b/spyvm/shadow.py
--- a/spyvm/shadow.py
+++ b/spyvm/shadow.py
@@ -355,8 +355,7 @@
 
     def find_selector(self, w_selector):
         if self.invalid:
-            self.sync_cache()
-        assert not self.invalid
+            return None
         return self.methoddict.get(w_selector, None)
 
     def update(self): return self.sync_cache()
diff --git a/spyvm/squeakimage.py b/spyvm/squeakimage.py
--- a/spyvm/squeakimage.py
+++ b/spyvm/squeakimage.py
@@ -375,6 +375,7 @@
         self.w_simulateCopyBits = self.find_symbol(space, reader, 
"simulateCopyBits")
         self.lastWindowSize = reader.lastWindowSize
         self.version = reader.version
+        self.is_modern = reader.version.magic > 6502
 
     def find_symbol(self, space, reader, symbol):
         w_dnu = self.special(constants.SO_DOES_NOT_UNDERSTAND)
diff --git a/spyvm/test/test_miniimage.py b/spyvm/test/test_miniimage.py
--- a/spyvm/test/test_miniimage.py
+++ b/spyvm/test/test_miniimage.py
@@ -306,6 +306,14 @@
     assert w_result is not None
     assert w_result.as_string() == "someString"
 
+def test_create_new_symbol_new_with_arg0():
+    w_dnu = get_image().special(constants.SO_DOES_NOT_UNDERSTAND)
+    w_Symbol = w_dnu.getclass(space)
+    w_res = perform(w_Symbol, "new:", w(0))
+    assert w_res.getclass(space).is_same_object(w_Symbol)
+    assert isinstance(w_res, model.W_BytesObject)
+    assert w_res.size() == 0
+
 def test_pi_as_w_float():
     import math
     w_result = perform(interp.space.w_Float, "pi")
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to