Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 0e75a632

Von Moritz Bunkus vor mehr als 9 Jahren hinzugefügt

  • ID 0e75a632271124a628dd600cb7eac739b595144d
  • Vorgänger 2ad2d77d
  • Nachfolger c0713b66

SL::DB::CustomVariable->value für Typ Nummer auch wirklich Nummer zurückgeben

Da die Spalte number_value in der DB vom Typ numeric() ist, wird das von
Rose als String eingelesen. Das bedeutet, dass ->number_value z.B. der
Wert '0.00000' liefert, was im Booleschen Kontext trueish ist – nicht
das, was der Programmierer erwarten würde.

Statt dessen erwartet der Programmierer, dass !$zahl für den Wert 0 auch
wirklich zutrifft.

Daher sollte ->value für CVars vom Typ Nummer auch wirklich eine Zahl
zurückgeben, was durch ein * 1 erzwungen wird. Ausnahme: undef, was
weiterhin undef bleibt.

Unterschiede anzeigen:

SL/DB/CustomVariable.pm
63 63

  
64 64
  goto &bool_value      if $type eq 'bool';
65 65
  goto &timestamp_value if $type eq 'timestamp';
66
  goto &number_value    if $type eq 'number';
66

  
67
  if ($type eq 'number') {
68
    return defined($self->number_value) ? $self->number_value * 1 : undef;
69
  }
67 70

  
68 71
  if ( $type eq 'customer' ) {
69 72
    require SL::DB::Customer;

Auch abrufbar als: Unified diff