Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 95470a2f

Von Sven Schöling vor mehr als 11 Jahren hinzugefügt

  • ID 95470a2f94bfd477c0ec4ed9282a6acd26074588
  • Vorgänger 245d5036
  • Nachfolger 8240edb6

Request::flatten sortiert jetzt Hashes nach keys.

Die Änderung war notwendig, weil in perl 5.18 die Hashrandomisierung deutlich
aggressiver ist. Flatten war vorher schon auf dem Papier nicht deterministisch,
das ist aber durch die Randomisierung von perl 5.10 bis 5.16 nie aufgefallen.
Der neue Algorithmus sorgt dafür dass die Datenstruktur

a => [
    {
b => 1,
c => 2,
}
]

sowohl als

a[+].b = 1
a[].c = 2

als auch als

a[+].c = 2
a[].b = 1

zurückkommen kann, je nach Reihenfolge die keys zurückgibt.

Ab jetzt wird immer die erste Version forciert.

Unterschiede anzeigen:

SL/Request.pm
312 312
  for (ref $source) {
313 313
    /^HASH$/ && do {
314 314
      my $first = 1;
315
      for my $key (keys %$source) {
315
      for my $key (sort keys %$source) {
316 316
        flatten($source->{$key} => $target, (defined $prefix ? $prefix . $arr_prefix->($first) . '.' : '') . $key);
317 317
        $first = 0;
318 318
      };

Auch abrufbar als: Unified diff