{ "id": "62659", "key": "TIMOB-2027", "fields": { "issuetype": { "id": "1", "description": "A problem which impairs or prevents the functions of the product.", "name": "Bug", "subtask": false }, "project": { "id": "10153", "key": "TIMOB", "name": "Titanium SDK/CLI", "projectCategory": { "id": "10100", "description": "Titanium and related SDKs used in application development", "name": "Client" } }, "fixVersions": [ { "id": "11225", "name": "Release 1.5.0", "archived": true, "released": true, "releaseDate": "2010-12-14" } ], "resolution": { "id": "1", "description": "A fix for this issue is checked into the tree and tested.", "name": "Fixed" }, "resolutiondate": "2011-04-17T01:57:51.000+0000", "created": "2011-04-15T03:08:29.000+0000", "priority": { "name": "Medium", "id": "3" }, "labels": [ "android", "custom", "defect", "kroll", "properties", "proxy" ], "versions": [], "issuelinks": [], "assignee": { "name": "mculpepper", "key": "mculpepper", "displayName": "Marshall Culpepper", "active": true, "timeZone": "America/Los_Angeles" }, "updated": "2011-04-17T01:57:51.000+0000", "status": { "description": "The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.", "name": "Closed", "id": "6", "statusCategory": { "id": 3, "key": "done", "colorName": "green", "name": "Done" } }, "components": [ { "id": "10202", "name": "Android", "description": "Android Platform" } ], "description": "{html}

An example from hal:

\n
\nvar viewInvRow = Ti.UI.createView(viewRowOptions);\nTi.API.info('----');\nviewInvRow.customObj = \"hello\";\nTi.API.info('viewInvRow.customObj: '+viewInvRow.customObj); // output ok\nviewInvRow.customObj = {};\nviewInvRow.customObj.test = \"hello\";\nTi.API.info('viewInvRow.customObj.test: '+viewInvRow.customObj.test); // undefined\nviewInvRow.customObj = { test : \"hello\" };\nTi.API.info('viewInvRow.customObj.test: '+viewInvRow.customObj.test); // output ok\nTi.API.info('----');\n
{html}", "attachment": [], "flagged": false, "summary": "Android: Weird behavior when setting custom sub properties on proxies ", "creator": { "name": "mculpepper", "key": "mculpepper", "displayName": "Marshall Culpepper", "active": true, "timeZone": "America/Los_Angeles" }, "subtasks": [], "reporter": { "name": "mculpepper", "key": "mculpepper", "displayName": "Marshall Culpepper", "active": true, "timeZone": "America/Los_Angeles" }, "environment": null, "comment": { "comments": [ { "id": "127295", "author": { "name": "nathanielmccallum", "key": "nathanielmccallum", "displayName": "Nathaniel McCallum", "active": true, "timeZone": "America/Los_Angeles" }, "body": "{html}

Something similar happens with this case (though, probably worse\nsince its a crash):

\n
\n// The object that will cause a crash\nvar X = function() {\n        this.y = 1;\n};\nX.prototype.getY = function() {\n        return this.y;\n};\n\nvar x = new X();\n\nvar row = Ti.UI.createTableViewRow();\nrow.x = x;\n\nTi.API.info(x.getY());     // 1.0\nTi.API.info(row.x.getY()); // CRASH!\n
\n

Log:
\nW/KrollConverter( 2859): (kroll$1) [351,491] Unhandled type\nconversion: value: {\"y\":1} type: org.appcelerator.kroll.KrollDict,\ninvocation: [setProperty UI.TableViewRow.x null]
\nI/TiAPI ( 2859): (kroll$1) [49,540] 1.0
\nI/ActivityManager( 60): Displayed activity\ncom.foo.foo/.FooActivity: 6077 ms (total 6077 ms)
\nE/KrollContext( 2859): (kroll$1) [462,1002] ECMA Error evaluating\nsource: TypeError: Cannot find default value for object.\n(app://app.js#14)
\nE/KrollContext( 2859): org.mozilla.javascript.EcmaError: TypeError:\nCannot find default value for object. (app://app.js#14)
\nE/KrollContext( 2859): at\norg.mozilla.javascript.ScriptRuntime.constructError(ScriptRuntime.java:3761)
\nE/KrollContext( 2859): at\norg.mozilla.javascript.ScriptRuntime.constructError(ScriptRuntime.java:3739)
\nE/KrollContext( 2859): at\norg.mozilla.javascript.ScriptRuntime.typeError(ScriptRuntime.java:3767)
\nE/KrollContext( 2859): at\norg.mozilla.javascript.ScriptRuntime.typeError1(ScriptRuntime.java:3779)
\nE/KrollContext( 2859): at\norg.mozilla.javascript.ScriptableObject.getDefaultValue(ScriptableObject.java:839)
\nE/KrollContext( 2859): at\norg.mozilla.javascript.ScriptableObject.getDefaultValue(ScriptableObject.java:758)
\nE/KrollContext( 2859): at\norg.mozilla.javascript.ScriptRuntime.toString(ScriptRuntime.java:790)
\nE/KrollContext( 2859): at\norg.mozilla.javascript.ScriptRuntime.notFunctionError(ScriptRuntime.java:3848)
\nE/KrollContext( 2859): at\norg.mozilla.javascript.ScriptRuntime.getPropFunctionAndThisHelper(ScriptRuntime.java:2343)
\nE/KrollContext( 2859): at\norg.mozilla.javascript.ScriptRuntime.getPropFunctionAndThis(ScriptRuntime.java:2310)
\nE/KrollContext( 2859): at\norg.mozilla.javascript.Interpreter.interpretLoop(Interpreter.java:1524)
\nE/KrollContext( 2859): at script(app://app.js:14)
\nE/KrollContext( 2859): at\norg.mozilla.javascript.Interpreter.interpret(Interpreter.java:854)
\nE/KrollContext( 2859): at\norg.mozilla.javascript.InterpretedFunction.call(InterpretedFunction.java:164)
\nE/KrollContext( 2859): at\norg.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:426)
\nE/KrollContext( 2859): at\norg.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:3161)
\nE/KrollContext( 2859): at\norg.mozilla.javascript.InterpretedFunction.exec(InterpretedFunction.java:175)
\nE/KrollContext( 2859): at\norg.mozilla.javascript.Context.evaluateReader(Context.java:1142)
\nE/KrollContext( 2859): at\norg.appcelerator.titanium.kroll.KrollContext.evaluateScript(KrollContext.java:193)
\nE/KrollContext( 2859): at\norg.appcelerator.titanium.kroll.KrollContext.handleEvalFile(KrollContext.java:218)
\nE/KrollContext( 2859): at\norg.appcelerator.titanium.kroll.KrollContext.handleMessage(KrollContext.java:115)
\nE/KrollContext( 2859): at\nandroid.os.Handler.dispatchMessage(Handler.java:95)
\nE/KrollContext( 2859): at\nandroid.os.Looper.loop(Looper.java:123)
\nE/KrollContext( 2859): at\norg.appcelerator.titanium.kroll.KrollHandlerThread.run(KrollHandlerThread.java:73)

{html}", "updateAuthor": { "name": "nathanielmccallum", "key": "nathanielmccallum", "displayName": "Nathaniel McCallum", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2011-04-15T03:08:29.000+0000", "updated": "2011-04-15T03:08:29.000+0000" }, { "id": "127296", "author": { "name": "mculpepper", "key": "mculpepper", "displayName": "Marshall Culpepper", "active": true, "timeZone": "America/Los_Angeles" }, "body": "{html}

(from [ee3b8859c349729bac353e413ef4eb051a51e86e])\nimplemented a new Scriptable wrapper extension of KrollDict so\ncustom objects don't get lost in the conversion mix. added a test\nto make sure custom objects work correctly when put on proxies\n[#2027 state:fixed-in-qa] \nhttps://github.com/appcelerator/titanium_mobile/commit/ee3b8859c349...

{html}", "updateAuthor": { "name": "mculpepper", "key": "mculpepper", "displayName": "Marshall Culpepper", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2011-04-15T03:08:30.000+0000", "updated": "2011-04-15T03:08:30.000+0000" }, { "id": "127297", "author": { "name": "mschmulen", "key": "mschmulen", "displayName": "Matt Schmulen", "active": true, "timeZone": "America/Los_Angeles" }, "body": "{html}

pass Titanium SDK version: 1.5.0 (12/07/10 10:00 8f4eea3...),\nbugTest android Device 1.6/ sim 2.1

{html}", "updateAuthor": { "name": "mschmulen", "key": "mschmulen", "displayName": "Matt Schmulen", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2011-04-15T03:08:30.000+0000", "updated": "2011-04-15T03:08:30.000+0000" } ], "maxResults": 3, "total": 3, "startAt": 0 } } }