Revision: 3741
          http://vexi.svn.sourceforge.net/vexi/?rev=3741&view=rev
Author:   mkpg2
Date:     2009-11-03 02:30:14 +0000 (Tue, 03 Nov 2009)

Log Message:
-----------
Fix. NPE possible when getting keysof a clone.

Modified Paths:
--------------
    trunk/core/org.ibex.js/src/org/ibex/js/JS.jpp
    trunk/core/org.ibex.js/src_junit/test/js/exec/general/TestGeneral.java
    trunk/core/org.ibex.js/src_junit/test/js/exec/general/destructuring.js
    trunk/core/org.ibex.js/src_junit/test/js/exec/general/keysof.js

Modified: trunk/core/org.ibex.js/src/org/ibex/js/JS.jpp
===================================================================
--- trunk/core/org.ibex.js/src/org/ibex/js/JS.jpp       2009-11-03 01:42:30 UTC 
(rev 3740)
+++ trunk/core/org.ibex.js/src/org/ibex/js/JS.jpp       2009-11-03 02:30:14 UTC 
(rev 3741)
@@ -503,7 +503,11 @@
             }
             return r;
         }
-        public Set keySet() throws JSExn { return props.keySet(); }
+        public Set keySet() throws JSExn { 
+               return props!=null?
+                       props.keySet():
+                       new HashSet(); // SHOULD use a constant here
+        }
         public JS unclone() { return this; }
         public String[] getFormalArgs() { return EMPTY_STRING_ARRAY; }
         public int callType(){ return CALLTYPE_METHOD; }

Modified: trunk/core/org.ibex.js/src_junit/test/js/exec/general/TestGeneral.java
===================================================================
--- trunk/core/org.ibex.js/src_junit/test/js/exec/general/TestGeneral.java      
2009-11-03 01:42:30 UTC (rev 3740)
+++ trunk/core/org.ibex.js/src_junit/test/js/exec/general/TestGeneral.java      
2009-11-03 02:30:14 UTC (rev 3741)
@@ -15,7 +15,7 @@
     public static void main(String[] args) throws Throwable {
        try{
                JSTestSuite jts = new JSTestSuite(TestGeneral.class);
-               JSTestCase t = jts.createTestCase(jts.getResourceDirs(), 
"clone.js");
+               JSTestCase t = jts.createTestCase(jts.getResourceDirs(), 
"keysof.js");
                //t.printByteCode();
                t.runBare();
        }catch(Throwable t){

Modified: trunk/core/org.ibex.js/src_junit/test/js/exec/general/destructuring.js
===================================================================
--- trunk/core/org.ibex.js/src_junit/test/js/exec/general/destructuring.js      
2009-11-03 01:42:30 UTC (rev 3740)
+++ trunk/core/org.ibex.js/src_junit/test/js/exec/general/destructuring.js      
2009-11-03 02:30:14 UTC (rev 3741)
@@ -14,3 +14,8 @@
 [a, b] = function(x,y){ return [y,x]; }(a,b);
 assertEquals(1,a);
 assertEquals(2,b);
+
+// decl 
+//var [c,d] = [1,2];
+//assertEquals(1,c);
+//assertEquals(2,d);

Modified: trunk/core/org.ibex.js/src_junit/test/js/exec/general/keysof.js
===================================================================
--- trunk/core/org.ibex.js/src_junit/test/js/exec/general/keysof.js     
2009-11-03 01:42:30 UTC (rev 3740)
+++ trunk/core/org.ibex.js/src_junit/test/js/exec/general/keysof.js     
2009-11-03 02:30:14 UTC (rev 3741)
@@ -1,13 +1,26 @@
 sys.import("shared");
 
+// empty
+{
+       var y = {};
+       var keys = keysof(y);
+       assert(keys.size==0);
+       
+       var z = sys.clone(y);
+       var zKeys = keysof(z);
+       assert(zKeys.size==0);
+       
+}
+//////
+{
+       var x = {a:"1",b:"2",c:"3"};
+       var keys = keysof(x);
+       assert(keys.size==3);
+       var keysarray = keys.toArray();
+       sys.trace(keysarray);
+       assertObjEquals(["a","b","c"],keys.toArray().sort());
+       keys.remove("a");
+       assert(keys.size==2);
+       assert(x.a==null);
+}
 
-//////
-var x = {a:"1",b:"2",c:"3"};
-var keys = keysof(x);
-assert(keys.size==3);
-var keysarray = keys.toArray();
-sys.trace(keysarray);
-assertObjEquals(["a","b","c"],keys.toArray().sort());
-keys.remove("a");
-assert(keys.size==2);
-assert(x.a==null);


This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.

------------------------------------------------------------------------------
Come build with us! The BlackBerry(R) Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay 
ahead of the curve. Join us from November 9 - 12, 2009. Register now!
http://p.sf.net/sfu/devconference
_______________________________________________
Vexi-svn mailing list
Vexi-svn@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/vexi-svn

Reply via email to