From 5973651dfafd6ca49a4b3fc2d1109a933dd2b34a Mon Sep 17 00:00:00 2001 From: erickson Date: Tue, 17 Feb 2009 17:47:18 +0000 Subject: [PATCH] not sure why this is an issue now (different perl/json:xs verions?), but $obj->{$k} = JSONObject2Perl($bool) results in 'Modification of a read-only value attempted', while $obj->{$k} = $bool does not, even though the JSON::XS::Boolean object is not altered by JSONObject2Perl(). just missing something? patched git-svn-id: svn://svn.open-ils.org/OpenSRF/trunk@1664 9efc2488-bf62-4759-914b-345cdb29e865 --- src/perl/lib/OpenSRF/Utils/JSON.pm | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/perl/lib/OpenSRF/Utils/JSON.pm b/src/perl/lib/OpenSRF/Utils/JSON.pm index bfefb86..7b962e1 100644 --- a/src/perl/lib/OpenSRF/Utils/JSON.pm +++ b/src/perl/lib/OpenSRF/Utils/JSON.pm @@ -79,7 +79,10 @@ sub JSONObject2Perl { } return undef; } - $obj->{$_} = $class->JSONObject2Perl($obj->{$_}) for (keys %$obj); + for my $k (keys %$obj) { + $obj->{$k} = (ref($obj->{$k}) eq 'JSON::XS::Boolean') ? + $obj->{$k} : $class->JSONObject2Perl($obj->{$k}); + } } elsif( $ref eq 'ARRAY' ) { $obj->[$_] = $class->JSONObject2Perl($obj->[$_]) for(0..scalar(@$obj) - 1); } -- 2.11.0