diff --git a/crates/loro-internal/src/arena.rs b/crates/loro-internal/src/arena.rs index 316e5697..f1bdd75a 100644 --- a/crates/loro-internal/src/arena.rs +++ b/crates/loro-internal/src/arena.rs @@ -391,7 +391,7 @@ impl SharedArena { container, content: crate::op::InnerContent::Future(crate::op::FutureInnerContent::Unknown { prop, - value, + value: Box::new(value), }), }, } diff --git a/crates/loro-internal/src/encoding/encode_reordered.rs b/crates/loro-internal/src/encoding/encode_reordered.rs index 4612b1ca..3d471521 100644 --- a/crates/loro-internal/src/encoding/encode_reordered.rs +++ b/crates/loro-internal/src/encoding/encode_reordered.rs @@ -1448,7 +1448,7 @@ pub(crate) fn decode_op( // NOTE: The future container type need also try to parse the unknown type ContainerType::Unknown(_) => crate::op::InnerContent::Future(FutureInnerContent::Unknown { prop, - value: value.into_owned(), + value: Box::new(value.into_owned()), }), }; diff --git a/crates/loro-internal/src/encoding/json_schema.rs b/crates/loro-internal/src/encoding/json_schema.rs index 831d60f5..ec91a442 100644 --- a/crates/loro-internal/src/encoding/json_schema.rs +++ b/crates/loro-internal/src/encoding/json_schema.rs @@ -378,7 +378,7 @@ fn encode_changes( }; JsonOpContent::Future(op::FutureOpWrapper { prop: *prop, - value: op::FutureOp::Unknown(value.clone()), + value: op::FutureOp::Unknown((**value).clone()), }) } #[cfg(feature = "counter")] @@ -626,7 +626,10 @@ fn decode_op(op: op::JsonOp, arena: &SharedArena, peers: &[PeerID]) -> LoroResul JsonOpContent::Future(op::FutureOpWrapper { prop, value: op::FutureOp::Unknown(value), - }) => InnerContent::Future(FutureInnerContent::Unknown { prop, value }), + }) => InnerContent::Future(FutureInnerContent::Unknown { + prop, + value: Box::new(value), + }), _ => unreachable!(), }, #[cfg(feature = "counter")] diff --git a/crates/loro-internal/src/op/content.rs b/crates/loro-internal/src/op/content.rs index eeee7769..fae23fa9 100644 --- a/crates/loro-internal/src/op/content.rs +++ b/crates/loro-internal/src/op/content.rs @@ -83,7 +83,7 @@ pub enum FutureInnerContent { Counter(f64), Unknown { prop: i32, - value: OwnedValue, + value: Box, }, } impl FutureInnerContent { diff --git a/crates/loro-internal/src/oplog.rs b/crates/loro-internal/src/oplog.rs index 18b784bc..8af42d28 100644 --- a/crates/loro-internal/src/oplog.rs +++ b/crates/loro-internal/src/oplog.rs @@ -933,7 +933,7 @@ pub(crate) fn local_op_to_remote( FutureInnerContent::Unknown { prop, value } => { contents.push(crate::op::RawOpContent::Unknown { prop: *prop, - value: value.clone(), + value: (**value).clone(), }) } },