Skip to content

Commit 381c23b

Browse files
committed
Fixed the bug of the modification of a read-only value
Thanks to Andrey Kuzmin.
1 parent 24298ed commit 381c23b

File tree

4 files changed

+47
-3
lines changed

4 files changed

+47
-3
lines changed

README

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
Config-Processor version 0.18
1+
Config-Processor version 0.19_01
22
=============================
33

44
INSTALLATION

lib/Config/Processor.pm

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,13 @@ use 5.008000;
44
use strict;
55
use warnings;
66

7-
our $VERSION = '0.18';
7+
our $VERSION = '0.19_01';
88

99
use File::Spec;
1010
use YAML::XS qw( LoadFile );
1111
use Cpanel::JSON::XS;
1212
use Hash::Merge;
13-
use Scalar::Util qw( refaddr );
13+
use Scalar::Util qw( refaddr readonly );
1414
use Carp qw( croak );
1515

1616
my %FILE_EXTENSIONS_MAP = (
@@ -195,6 +195,8 @@ sub _load_json {
195195
sub _process_tree {
196196
my $self = shift;
197197

198+
return if readonly( $_[0] );
199+
198200
$_[0] = $self->_process_node( $_[0] );
199201

200202
if ( my $node_addr = refaddr( $_[0] ) ) {

t/02-processing.t

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -605,6 +605,8 @@ sub t_directive_processing_on {
605605
param4_2 => 'moo:val4_2',
606606
param4_3 => 'moo:val4_3',
607607
param4_4 => 'moo:val4_4',
608+
param4_7 => 1,
609+
param4_8 => '',
608610
},
609611

610612
param4_A => {
@@ -613,6 +615,8 @@ sub t_directive_processing_on {
613615
param4_3 => 'moo:val4_3',
614616
param4_4 => 'moo:val4_4',
615617
param4_5 => 'moo:val4_A_5',
618+
param4_7 => 1,
619+
param4_8 => '',
616620
},
617621

618622
param4_B => {
@@ -621,6 +625,8 @@ sub t_directive_processing_on {
621625
param4_3 => 'moo:val4_B_3',
622626
param4_4 => 'moo:val4_B_4',
623627
param4_5 => 'moo:val4_B_5',
628+
param4_7 => 1,
629+
param4_8 => '',
624630
},
625631

626632
param4_C => {
@@ -630,6 +636,8 @@ sub t_directive_processing_on {
630636
param4_4 => 'moo:val4_4',
631637
param4_5 => 'moo:val4_A_5',
632638
param4_6 => 'moo:val4_C_6',
639+
param4_7 => 1,
640+
param4_8 => '',
633641
},
634642

635643
param4_D => {
@@ -639,6 +647,8 @@ sub t_directive_processing_on {
639647
param4_4 => 'moo:val4_B_4',
640648
param4_5 => 'moo:val4_B_5',
641649
param4_6 => 'moo:val4_D_6',
650+
param4_7 => 1,
651+
param4_8 => '',
642652
},
643653

644654
param4_E => {
@@ -647,6 +657,8 @@ sub t_directive_processing_on {
647657
param4_3 => 'moo:val4_3',
648658
param4_4 => 'moo:val4_4',
649659
param4_5 => 'moo:val4_E_5',
660+
param4_7 => 1,
661+
param4_8 => '',
650662
},
651663

652664
param4_F => {
@@ -655,6 +667,8 @@ sub t_directive_processing_on {
655667
param4_3 => 'moo:val4_3',
656668
param4_4 => 'moo:val4_4',
657669
param4_5 => 'moo:val4_F_5',
670+
param4_7 => 1,
671+
param4_8 => '',
658672
},
659673

660674
param4_G => {
@@ -664,6 +678,8 @@ sub t_directive_processing_on {
664678
param4_4 => 'moo:val4_4',
665679
param4_5 => 'moo:val4_E_5',
666680
param4_6 => 'moo:val4_G_6',
681+
param4_7 => 1,
682+
param4_8 => '',
667683
},
668684

669685
param4_H => {
@@ -673,6 +689,8 @@ sub t_directive_processing_on {
673689
param4_4 => 'moo:val4_4',
674690
param4_5 => 'moo:val4_F_5',
675691
param4_6 => 'moo:val4_H_6',
692+
param4_7 => 1,
693+
param4_8 => '',
676694
},
677695

678696
param5 => {
@@ -846,6 +864,8 @@ sub t_directive_processing_off {
846864
param4_2 => 'moo:val4_2',
847865
param4_3 => 'moo:val4_3',
848866
param4_4 => 'moo:val4_4',
867+
param4_7 => 1,
868+
param4_8 => '',
849869
},
850870

851871
param4_A => {
@@ -1131,6 +1151,8 @@ sub t_complete_processing {
11311151
param4_2 => 'moo:val4_2',
11321152
param4_3 => 'moo:val4_3',
11331153
param4_4 => 'moo:val4_4',
1154+
param4_7 => 1,
1155+
param4_8 => '',
11341156
},
11351157

11361158
param4_A => {
@@ -1139,6 +1161,8 @@ sub t_complete_processing {
11391161
param4_3 => 'moo:val4_3',
11401162
param4_4 => 'moo:val4_4',
11411163
param4_5 => 'moo:val4_A_5',
1164+
param4_7 => 1,
1165+
param4_8 => '',
11421166
},
11431167

11441168
param4_B => {
@@ -1147,6 +1171,8 @@ sub t_complete_processing {
11471171
param4_3 => 'moo:val4_B_3',
11481172
param4_4 => 'moo:val4_B_4',
11491173
param4_5 => 'moo:val4_B_5',
1174+
param4_7 => 1,
1175+
param4_8 => '',
11501176
},
11511177

11521178
param4_C => {
@@ -1156,6 +1182,8 @@ sub t_complete_processing {
11561182
param4_4 => 'moo:val4_4',
11571183
param4_5 => 'moo:val4_A_5',
11581184
param4_6 => 'moo:val4_C_6',
1185+
param4_7 => 1,
1186+
param4_8 => '',
11591187
},
11601188

11611189
param4_D => {
@@ -1165,6 +1193,8 @@ sub t_complete_processing {
11651193
param4_4 => 'moo:val4_B_4',
11661194
param4_5 => 'moo:val4_B_5',
11671195
param4_6 => 'moo:val4_D_6',
1196+
param4_7 => 1,
1197+
param4_8 => '',
11681198
},
11691199

11701200
param4_E => {
@@ -1173,6 +1203,8 @@ sub t_complete_processing {
11731203
param4_3 => 'moo:val4_3',
11741204
param4_4 => 'moo:val4_4',
11751205
param4_5 => 'moo:val4_E_5',
1206+
param4_7 => 1,
1207+
param4_8 => '',
11761208
},
11771209

11781210
param4_F => {
@@ -1181,6 +1213,8 @@ sub t_complete_processing {
11811213
param4_3 => 'moo:val4_3',
11821214
param4_4 => 'moo:val4_4',
11831215
param4_5 => 'moo:val4_F_5',
1216+
param4_7 => 1,
1217+
param4_8 => '',
11841218
},
11851219

11861220
param4_G => {
@@ -1190,6 +1224,8 @@ sub t_complete_processing {
11901224
param4_4 => 'moo:val4_4',
11911225
param4_5 => 'moo:val4_E_5',
11921226
param4_6 => 'moo:val4_G_6',
1227+
param4_7 => 1,
1228+
param4_8 => '',
11931229
},
11941230

11951231
param4_H => {
@@ -1199,6 +1235,8 @@ sub t_complete_processing {
11991235
param4_4 => 'moo:val4_4',
12001236
param4_5 => 'moo:val4_F_5',
12011237
param4_6 => 'moo:val4_H_6',
1238+
param4_7 => 1,
1239+
param4_8 => '',
12021240
},
12031241

12041242
param5 => {
@@ -1301,6 +1339,8 @@ sub t_complete_processing {
13011339
param4_3 => 'moo:val4_3',
13021340
param4_4 => 'moo:val4_4',
13031341
param4_5 => 'moo:val4_A_5',
1342+
param4_7 => 1,
1343+
param4_8 => '',
13041344

13051345
param5_1 => {
13061346
param5_1_1 => 'moo_A:val5_1_1',

t/etc/moo.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@ moo:
1111
param4_2: "moo:val4_2"
1212
param4_3: "moo:val4_3"
1313
param4_4: "moo:val4_4"
14+
param4_7: true
15+
param4_8: false
1416

1517
param4_A:
1618
underlay: { var: moo.param4 }

0 commit comments

Comments
 (0)