We have moved to a new Sailfish OS Forum. Please start new discussions there.

Revision history [back]

click to hide/show revision 1
initial version

posted 2015-07-16 12:50:01 +0200

Dial pad asterisk "*" button state bug

In the Phone app, when entering a phone number manually to call using the dial pad, the asterisk * button of the dial pad also supports typing the + and p symbols. The + and p symbols are achieved by pressing the * button repeatedly frequently enough (faster than ~800ms, it seems).

Now it seems the state tracking of the * button breaks after having typed a + or a p if you press another button (e.g. a number) within the same 800ms time window after typing + or p. In this case the * button state does not reset back to start from * again - instead it continues with the last symbol typed with the * button.

To clarify, here's an example. With the dial pad open, press the following button sequence in a quick fashion (must be less than 800ms between each button press):

**7**7**7

Expected resulting phone number:

+7+7+7

Actual resulting phone number:

+7p7*7

This example sequence does not represent a typical usage scenario, rather it presents the problem using an easy-to-reproduce procedure. The real-world problem arises from the fact that the broken state is not reset when closing the dialpad, and not even when closing the whole phone app. Calling almost exclusively international phone numbers, I need to prefix almost all phone numbers with a + sign. So when I make several international calls in succession using the dial pad, I routinely start by hitting ** to get a + followed by the numbers of the phone number - fast enough that the time between the last * and the first number is less than 800ms. And then, because of the bug, when I try to call the second number, hitting * twice produces p instead of +, and I have to start erasing to fix the "typo".

The awkward workaround is to wait 800ms after typing every + or p symbol, after which the state is correctly reset. Or alternatively memorize the dial pad's internal state in your brain and press * only once to repeat the previously typed symbol :D


While reverse-engineering this bug, I noticed that the following sequence reveals a different anomaly related to the * button state (again, press buttons at less than 800ms intervals):

**<backspace>******

Expected output:

p

Actual output:

+*p+*p

And another sequence:

7*<backspace>*

Expected output:

7*

Actual output:

*

I have not bumped into these latter sequences during regular use, but though I'd share them anyway.

Dial pad Dialpad asterisk "*" button state bug

In the Phone app, when entering a phone number manually to call using the dial pad, dialpad, the asterisk * button of the dial pad dialpad also supports typing the + and p symbols. The + and p symbols are achieved by pressing the * button repeatedly frequently enough (faster than ~800ms, it seems).

Now it seems the state tracking of the * button breaks after having typed a + or a p if you press another button (e.g. a number) within the same 800ms time window after typing + or p. In this case the * button state does not reset back to start from * again - instead it continues with the last symbol typed with the * button.

To clarify, here's an example. With the dial pad dialpad open, press the following button sequence in a quick fashion (must be less than 800ms between each button press):

**7**7**7

Expected resulting phone number:

+7+7+7

Actual resulting phone number:

+7p7*7

This example sequence does not represent a typical usage scenario, rather it presents the problem using an easy-to-reproduce procedure. The real-world problem arises from the fact that the broken state is not reset when closing the dialpad, and not even when closing the whole phone app. Calling almost exclusively international phone numbers, I need to prefix almost all phone numbers with a + sign. So when I make several international calls in succession using the dial pad, dialpad, I routinely start by hitting ** to get a + followed by the numbers of the phone number - fast enough that the time between the last * and the first number is less than 800ms. And then, because of the bug, when I try to call the second number, hitting * twice produces p instead of +, and I have to start erasing to fix the "typo".

The awkward workaround is to wait 800ms after typing every + or p symbol, after which the state is correctly reset. Or alternatively memorize the dial pad's dialpad's internal state in your brain and press * only once to repeat the previously typed symbol :D


While reverse-engineering this bug, I noticed that the following sequence reveals a different anomaly related to the * button state (again, press buttons at less than 800ms intervals):

**<backspace>******

Expected output:

p

Actual output:

+*p+*p

And another sequence:

7*<backspace>*

Expected output:

7*

Actual output:

*

I have not bumped into these latter sequences during regular use, but though I'd share them anyway.

Dialpad asterisk "*" button state bug

In the Phone app, when entering a phone number manually to call using the dialpad, the asterisk * button of the dialpad also supports typing the + and p symbols. The + and p symbols are achieved by pressing the * button repeatedly frequently enough (faster than ~800ms, it seems).

Now it seems the state tracking of the * button breaks after having typed a + or a p if you press another button (e.g. a number) within the same 800ms time window after typing + or p. In this case the * button state does not reset back to start from * again - instead it continues with the last symbol typed with the * button.

To clarify, here's an example. With the dialpad open, press the following button sequence in a quick fashion (must be less than 800ms between each button press):

**7**7**7

Expected resulting phone number:

+7+7+7

Actual resulting phone number:

+7p7*7

This example sequence does not represent a typical usage scenario, rather it presents the problem using an easy-to-reproduce procedure. The real-world problem arises from the fact that the broken state is not reset when closing the dialpad, and not even when closing the whole phone app. Calling almost exclusively international phone numbers, I need to prefix almost all phone numbers with a + sign. So when I make several international calls in succession using the dialpad, I routinely start by hitting ** to get a + followed by the numbers of the phone number - fast enough that the time between the last * and the first number is less than 800ms. And then, because of the bug, when I try to call the second number, hitting * twice produces p instead of +, and I have to start erasing to fix the "typo".

The awkward workaround is to wait 800ms after typing every + or p symbol, after which the state is correctly reset. Or alternatively memorize the dialpad's internal state in your brain and press * only once to repeat the previously typed symbol :D


While reverse-engineering this bug, I noticed that the following sequence reveals a different anomaly related to the * button state (again, press buttons at less than 800ms intervals):

**<backspace>******

Expected output:

p

Actual output:

+*p+*p

And another sequence:

7*<backspace>*

Expected output:

7*

Actual output:

*

I have not bumped into these latter sequences during regular use, but though I'd share them anyway.