[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Math::BigInt dislikes undefined values



Greeting all.
I recently upgraded to perl 5.16.1 am noticing Math::BigInt.pm does not
like undefined or zero values from Form.pm sub sub db_parse_numeric.
It will complain cant call method "is_zero" on an undefined value

Is it OK to check if we have a defined value in $arrayref->[$_] and
$names->[$_] then call Math::whatever rather than call first then
determine if $hashref is defined?

The following patch illustrates my idea and eliminates the error:
---Begin patch
--- Form.pm     2012-10-09 11:27:19.478584216 -0700
+++ Form.pm.1   2012-10-09 11:27:12.999585237 -0700
@@ -608,10 +608,8 @@
     for (0 .. $#names) {
         #   numeric            real/float4
         if ($types[$_] == 3 or $types[$_] == 2){
-            $arrayref->[$_] = Math::BigFloat->new($arrayref->[$_])
-              if defined $arrayref;
-            $hashref->{$names[$_]} =
Math::BigFloat->new($hashref->{$names[$_]})
-              if defined $hashref;
+          if ($arrayref->[$_]) {$arrayref->[$_] =
Math::BigFloat->new($arrayref->[$_]) ;}
+          if ($names->[$_]) {$hashref->{$names[$_]} =
Math::BigFloat->new($hashref->{$names[$_]});}
         }

     }

---End patch
I am not sure since there are tons of places that call Form.pm sub sub
db_parse_numeric.
Note: I am still running the 1.2 version and this patch is against its
/trunk -r 5153.

Note 2: I have not tested where else undefined values could be sent to Math::

Cheers Turtle

PS
I did notice a thread on the user list where the user just removes
Math::BigInt and in my case this is not an viable option.