Skip to content

Commit fa6389a

Browse files
Properly clone objects for comparison
Otherwise, they're handled by reference and transformed on update
1 parent a353d96 commit fa6389a

File tree

3 files changed

+9
-0
lines changed

3 files changed

+9
-0
lines changed

src/Option_Command.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -543,6 +543,9 @@ public function patch( $args, $assoc_args ) {
543543

544544
/* Need to make a copy of $current_value here as it is modified by reference */
545545
$old_value = $current_value = sanitize_option( $key, get_option( $key ) );
546+
if ( is_object( $current_value ) ) {
547+
$old_value = clone $current_value;
548+
}
546549

547550
$traverser = new RecursiveDataStructureTraverser( $current_value );
548551

src/Site_Option_Command.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -372,6 +372,9 @@ public function patch( $args, $assoc_args ) {
372372

373373
/* Need to make a copy of $current_value here as it is modified by reference */
374374
$old_value = $current_value = sanitize_option( $key, get_site_option( $key ) );
375+
if ( is_object( $current_value ) ) {
376+
$old_value = clone $current_value;
377+
}
375378

376379
$traverser = new RecursiveDataStructureTraverser( $current_value );
377380

src/WP_CLI/CommandWithMeta.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -390,6 +390,9 @@ public function patch( $args, $assoc_args ) {
390390

391391
/* Need to make a copy of $current_meta_value here as it is modified by reference */
392392
$current_meta_value = $old_meta_value = sanitize_meta( $meta_key, get_metadata( $this->meta_type, $object_id, $meta_key, true ), $this->meta_type );
393+
if ( is_object( $current_meta_value ) ) {
394+
$old_meta_value = clone $current_meta_value;
395+
}
393396

394397
$traverser = new RecursiveDataStructureTraverser( $current_meta_value );
395398

0 commit comments

Comments
 (0)