{ "id": "63024", "key": "TIMOB-2392", "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": [], "resolution": { "id": "2", "description": "The problem described is an issue which will never be fixed.", "name": "Won't Fix" }, "resolutiondate": "2013-11-15T20:53:52.000+0000", "created": "2011-04-15T03:18:29.000+0000", "priority": { "name": "High", "id": "2" }, "labels": [ "SupportTeam", "core", "hard_to_verify", "regression" ], "versions": [ { "id": "13505", "description": "Release 3.0.0", "name": "Release 3.0.0", "archived": true, "released": true, "releaseDate": "2012-12-14" } ], "issuelinks": [ { "id": "14264", "type": { "id": "10002", "name": "Duplicate", "inward": "is duplicated by", "outward": "duplicates" }, "inwardIssue": { "id": "67450", "key": "TIMOB-4326", "fields": { "summary": "iOS: Inconsistent Object Access on Windows", "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" } }, "priority": { "name": "Medium", "id": "3" }, "issuetype": { "id": "1", "description": "A problem which impairs or prevents the functions of the product.", "name": "Bug", "subtask": false } } } }, { "id": "14267", "type": { "id": "10003", "name": "Relates", "inward": "relates to", "outward": "relates to" }, "inwardIssue": { "id": "83914", "key": "TIMOB-6688", "fields": { "summary": "iOS: CommonJS - Module variables not updated", "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" } }, "priority": { "name": "Critical", "id": "1" }, "issuetype": { "id": "1", "description": "A problem which impairs or prevents the functions of the product.", "name": "Bug", "subtask": false } } } } ], "assignee": { "name": "ingo", "key": "ingo", "displayName": "Ingo Muschenetz", "active": true, "timeZone": "America/Los_Angeles" }, "updated": "2017-03-22T18:16:35.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": "10206", "name": "iOS", "description": "iOS Platform" } ], "description": "Test fails customObjects:53\r\n\r\n{code}\r\nview.customObj = {};\r\nview.customObj.test = \"hello\";\r\nvalueOf(view.customObj.test).shouldBe(\"hello\");\r\n{code}\r\n\r\nNote that view.customObj = { test:\"hello\" } passes. Probably has to do with objects being presented as raw NSDictionary, and not translating property accessors as [setValue:forKey:].", "attachment": [], "flagged": false, "summary": "iOS: Drillbit regression: kroll.js", "creator": { "name": "stephentramer", "key": "stephentramer", "displayName": "Stephen Tramer", "active": true, "timeZone": "America/Los_Angeles" }, "subtasks": [], "reporter": { "name": "stephentramer", "key": "stephentramer", "displayName": "Stephen Tramer", "active": true, "timeZone": "America/Los_Angeles" }, "environment": null, "comment": { "comments": [ { "id": "128344", "author": { "name": "stephentramer", "key": "stephentramer", "displayName": "Stephen Tramer", "active": true, "timeZone": "America/Los_Angeles" }, "body": "{html}

Okay - this is super serious, and a massive overhaul. Here's the\nfull story:

\n\n

There are two solutions:

\n\n

Going to strongly recommend the latter and push this for 1.6.0\nbut expect it to become a \"future\".

{html}", "updateAuthor": { "name": "stephentramer", "key": "stephentramer", "displayName": "Stephen Tramer", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2011-04-15T03:18:30.000+0000", "updated": "2011-04-15T03:18:30.000+0000" }, { "id": "128345", "author": { "name": "stephentramer", "key": "stephentramer", "displayName": "Stephen Tramer", "active": true, "timeZone": "America/Los_Angeles" }, "body": "{html}

Going to assign for M05 as part of \"massive meeting.\"

{html}", "updateAuthor": { "name": "stephentramer", "key": "stephentramer", "displayName": "Stephen Tramer", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2011-04-15T03:18:30.000+0000", "updated": "2011-04-15T03:18:30.000+0000" }, { "id": "128346", "author": { "name": "stephentramer", "key": "stephentramer", "displayName": "Stephen Tramer", "active": true, "timeZone": "America/Los_Angeles" }, "body": "{html}

Tagging for inclusion in 1.7 since we don't have a milestone\nyet.

{html}", "updateAuthor": { "name": "stephentramer", "key": "stephentramer", "displayName": "Stephen Tramer", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2011-04-15T03:18:30.000+0000", "updated": "2011-04-15T03:18:30.000+0000" }, { "id": "128347", "author": { "name": "dthorp", "key": "dthorp", "displayName": "Don Thorp", "active": true, "timeZone": "America/Los_Angeles" }, "body": "{html}

removing release- tag as it's for committed code. Using\ntbs-1.7.0 to find items we know need to go in the next release.

{html}", "updateAuthor": { "name": "dthorp", "key": "dthorp", "displayName": "Don Thorp", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2011-04-15T03:18:31.000+0000", "updated": "2011-04-15T03:18:31.000+0000" }, { "id": "157603", "author": { "name": "blainhamon", "key": "blainhamon", "displayName": "Blain Hamon", "active": true, "timeZone": "America/Los_Angeles" }, "updateAuthor": { "name": "blainhamon", "key": "blainhamon", "displayName": "Blain Hamon", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2011-06-22T17:35:46.000+0000", "updated": "2011-06-22T17:35:46.000+0000" }, { "id": "160788", "author": { "name": "stephentramer", "key": "stephentramer", "displayName": "Stephen Tramer", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Going to strongly recommend we schedule this out of 1.8.0 as it is a significant Kroll layer change.", "updateAuthor": { "name": "stephentramer", "key": "stephentramer", "displayName": "Stephen Tramer", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2011-07-27T13:40:26.000+0000", "updated": "2011-07-27T13:40:26.000+0000" }, { "id": "178707", "author": { "name": "bitshftr", "key": "bitshftr", "displayName": "Shawn Lipscomb", "active": true, "timeZone": "America/New_York" }, "updateAuthor": { "name": "bitshftr", "key": "bitshftr", "displayName": "Shawn Lipscomb", "active": true, "timeZone": "America/New_York" }, "created": "2012-01-10T10:41:24.000+0000", "updated": "2012-01-10T12:11:27.000+0000" }, { "id": "216230", "author": { "name": "blainhamon", "key": "blainhamon", "displayName": "Blain Hamon", "active": true, "timeZone": "America/Los_Angeles" }, "body": "The issue here is that it's a 'rewrite Titanium' issue. The way Titanium on iOS works is that there's a native object (TiProxy) underlying all Titanium JS objects. The data stored in TiProxy are wildly different than JS objects, partially because NSObjects can be threadsafe, and JSCore is explicitly not threadsafe.\r\n\r\nIn order to make this really happen:\r\n# Enforce single context running at a time.\r\n# Modify the KrollObject behavior so that the JS portion stores away adhoc properties.\r\n# Introduce a means to indicate which properties are stored on proxy\r\n# Modify all Titanium classes to implement this.\r\n# Document which properties still copy-on-read and copy-on-write for safety issues (eg., Ti.UI.TableView's data and sections properties)\r\n\r\n(I'm probably forgetting a lot more about it)", "updateAuthor": { "name": "blainhamon", "key": "blainhamon", "displayName": "Blain Hamon", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2012-08-27T11:34:59.000+0000", "updated": "2012-08-27T11:34:59.000+0000" }, { "id": "243132", "author": { "name": "andrey@studiomobile.ru", "key": "andrey@studiomobile.ru", "displayName": "Andrey Verbin", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Hi, \r\n\r\nI think this bug related to how titanium marshall objects between iOS and JS. AFAIK it just copies them, example below demonstrates that.\r\n{noformat}\r\nvar array = [1,2]\r\nvar view = Ti.UI.createView()\r\nview.array = array\r\nview.array[3] = 3\r\nconsole.log(array) //[1,2] expecting [1,2,3]\r\nconsole.log(view.array) //[1,2] expecting [1,2,3]\r\narray[3] = 3\r\nconsole.log(array) //[1,2,3] as it should be\r\nconsole.log(view.array) //[1,2] expecting [1,2,3]\r\n{noformat}\r\nYou can also get stack overflow if you assign a complex JS object with cycles to proxy property due to the copying process.", "updateAuthor": { "name": "andrey@studiomobile.ru", "key": "andrey@studiomobile.ru", "displayName": "Andrey Verbin", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2013-03-20T11:52:44.000+0000", "updated": "2013-03-20T11:52:44.000+0000" }, { "id": "279851", "author": { "name": "ingo", "key": "ingo", "displayName": "Ingo Muschenetz", "active": true, "timeZone": "America/Los_Angeles" }, "body": "We're not going to be addressing this particular issue for two reasons:\r\n\r\n# Drillbit has been superseded by Anvil\r\n# Ti.Next will take a different architecture approach not involving a Kroll layer per se.\r\n\r\nThe value in fixing this is outweighed by the amount of effort it would take that is better spent on other areas.", "updateAuthor": { "name": "ingo", "key": "ingo", "displayName": "Ingo Muschenetz", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2013-11-15T20:53:53.000+0000", "updated": "2013-11-15T20:53:53.000+0000" }, { "id": "414849", "author": { "name": "lmorris", "key": "lmorris", "displayName": "Lee Morris", "active": false, "timeZone": "America/Los_Angeles" }, "body": "Closing ticket as the issue will not fix and with reference to the above comments. ", "updateAuthor": { "name": "lmorris", "key": "lmorris", "displayName": "Lee Morris", "active": false, "timeZone": "America/Los_Angeles" }, "created": "2017-03-22T18:16:35.000+0000", "updated": "2017-03-22T18:16:35.000+0000" } ], "maxResults": 13, "total": 13, "startAt": 0 } } }