incubator-flex-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Ben Crowl (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (FLEX-33280) [iOS] Packager compiles boolean condition incorrectly after loop break
Date Wed, 28 Nov 2012 01:58:58 GMT

     [ https://issues.apache.org/jira/browse/FLEX-33280?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Ben Crowl updated FLEX-33280:
-----------------------------

    Description: 
ActionScript codes executes unexpectedly when compiled with Ad-Hoc packaging type, using the
Flex Packager for iOS.

The attached sample program contains a for each loop within another for each loop, that is
used to compare two lists of integers.  At the start of the outer loop, a variable named "matched"
is set to false.

When a match is found in the inner loop, matched is assigned the value true, and the inner
loop issues a break command to early-exit the loop.

Following the inner loop, an if statement checks the value of the boolean variable, like so:

if (matched == false)
{
...
}

When the code is execute as an adhoc iOS release build on an iPad 3, the code within the if
statement is executed even when matched == true.

Changing the code to the following, works as expected:

if (!matched)
{
...
}

Steps to reproduce:
1) Run the attached BasicMobile project in the AIR simulator on your desktop
2) The expected result is:

1. Using matched == false
---------------------------
Loop
UNMATCHED: 0
Loop
UNMATCHED: 1
Loop
MATCHED: 2, 2
Loop
MATCHED: 3, 3
Loop
UNMATCHED: 4



2. Using !matched
---------------------------
Loop
UNMATCHED: 0
Loop
UNMATCHED: 1
Loop
MATCHED: 2, 2
Loop
MATCHED: 3, 3
Loop
UNMATCHED: 4



3. Using no break
---------------------------
Loop
UNMATCHED: 0
Loop
UNMATCHED: 1
Loop
MATCHED: 2, 2
Loop
MATCHED: 3, 3
Loop
UNMATCHED: 4


1) Export a release build for the attached BasicMobile project for Apple iOS, using Ad Hoc
packaging type.
2) Install the app on an iPad or iPhone
3) Run the app.  The expected result is:





  was:
An ActionScript function executes unexpectedly when compiled using Ad-Hoc release mode, using
the Flex Packager for iOS.

The sample program contains a  for each loop within another for each loop, that is used to
compare two lists of integers.  At the start of the outer loop, a variable named "matched"
is set to false.

When a match is found in the inner loop, matched is assigned the value true, and the inner
loop issues a break command to early-exit the loop.

Following the inner loop, an if statement checks the value of the boolean variable, like so:

if (matched == false)
{
...
}

When the code is execute as an adhoc iOS release build on an iPad 3, the code within the if
statement is executed even when matched == true.

Changing the code to the following, works as expected:

if (!matched)
{
...
}




    
> [iOS] Packager compiles boolean condition incorrectly after loop break
> ----------------------------------------------------------------------
>
>                 Key: FLEX-33280
>                 URL: https://issues.apache.org/jira/browse/FLEX-33280
>             Project: Apache Flex
>          Issue Type: Bug
>          Components: .Unspecified - Compiler, Installation & Packaging
>    Affects Versions: Adobe Flex SDK 4.6 (Release)
>         Environment: Windows 7 Ultimate
> Adobe Flex SDK 4.6 (build 23201, includes Adobe AIR 3.4 SDK)
> Flash Builder 4.5.1.313231
> iPad 3 (running iOS6.0) / iPad 2 (running iOS6.0)
>            Reporter: Ben Crowl
>              Labels: ios, packaging
>         Attachments: BasicMobile.zip
>
>
> ActionScript codes executes unexpectedly when compiled with Ad-Hoc packaging type, using
the Flex Packager for iOS.
> The attached sample program contains a for each loop within another for each loop, that
is used to compare two lists of integers.  At the start of the outer loop, a variable named
"matched" is set to false.
> When a match is found in the inner loop, matched is assigned the value true, and the
inner loop issues a break command to early-exit the loop.
> Following the inner loop, an if statement checks the value of the boolean variable, like
so:
> if (matched == false)
> {
> ...
> }
> When the code is execute as an adhoc iOS release build on an iPad 3, the code within
the if statement is executed even when matched == true.
> Changing the code to the following, works as expected:
> if (!matched)
> {
> ...
> }
> Steps to reproduce:
> 1) Run the attached BasicMobile project in the AIR simulator on your desktop
> 2) The expected result is:
> 1. Using matched == false
> ---------------------------
> Loop
> UNMATCHED: 0
> Loop
> UNMATCHED: 1
> Loop
> MATCHED: 2, 2
> Loop
> MATCHED: 3, 3
> Loop
> UNMATCHED: 4
> 2. Using !matched
> ---------------------------
> Loop
> UNMATCHED: 0
> Loop
> UNMATCHED: 1
> Loop
> MATCHED: 2, 2
> Loop
> MATCHED: 3, 3
> Loop
> UNMATCHED: 4
> 3. Using no break
> ---------------------------
> Loop
> UNMATCHED: 0
> Loop
> UNMATCHED: 1
> Loop
> MATCHED: 2, 2
> Loop
> MATCHED: 3, 3
> Loop
> UNMATCHED: 4
> 1) Export a release build for the attached BasicMobile project for Apple iOS, using Ad
Hoc packaging type.
> 2) Install the app on an iPad or iPhone
> 3) Run the app.  The expected result is:

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Mime
View raw message