Revision 0e75a632
Von Moritz Bunkus vor mehr als 9 Jahren hinzugefügt
SL/DB/CustomVariable.pm | ||
---|---|---|
63 | 63 |
|
64 | 64 |
goto &bool_value if $type eq 'bool'; |
65 | 65 |
goto ×tamp_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
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.