Modify

Opened 2 years ago

Last modified 13 months ago

#3948 assigned Bug

Map object: keys [0] and ["["] clash

Reported by: Simon E. <autoitscript.com@…> Owned by: Jon
Milestone: Component: AutoIt
Version: 3.3.16.1 Severity: None
Keywords: maps, keys Cc:

Description

Hi team,

I realise that map objects are experimental and bug reports are not wanted, but I just thought I'd record this here in case anyone is interested.

When a map object contains a key of 0 and a key of [ these seem to clash in some way and tend to overwrite each other. But somewhat intermittently.

Here's an example script:

Local $map[]

$map["a"] = 1
$map["0"] = 2
$map[0]   = 3
$map["["] = 4

ConsoleWrite($map["a"] & @CRLF)         ; expecting 1
ConsoleWrite($map["0"] & @CRLF)         ; expecting 2
ConsoleWrite($map[0]   & @CRLF)         ; expecting 3, but sometimes prints 4
ConsoleWrite($map["["] & @CRLF)         ; expecting 4

$map[0] = 5

ConsoleWrite($map[0]   & @CRLF)         ; expecting 5
ConsoleWrite($map["["] & @CRLF)         ; expecting 4, but sometimes prints 5

When running this script, I would expect the console to show:

1
2
3
4
5
4

This happens intermittently, on about 40% of executions. On the other 60%, I get this result instead, where any assignment to $map[0] and $map["["] ends up overwriting each other:

1
2
4
4
5
5

I suspect that somehow, internally, 0 and [ are assigned the same value, resulting in the clash.

I uncovered this while trying to create a map of various characters and their binary representations. One workaround is to ensure the keys are all strings, and not use integer keys. It was a confusing bug for a while, though.

Change History (2)

comment:1 Changed 13 months ago by Jpm

  • Owner set to Jpm
  • Status changed from new to assigned

comment:2 Changed 13 months ago by Jpm

  • Owner changed from Jpm to Jon

Fix sent to Jon

Guidelines for posting comments:

  • You cannot re-open a ticket but you may still leave a comment if you have additional information to add.
  • In-depth discussions should take place on the forum.

For more information see the full version of the ticket guidelines here.

Add Comment

Author


E-mail address and user name can be saved in the Preferences.

 
Note: See TracTickets for help on using tickets.