From 7159ed9debe13ded2da1311a1ae8c6b615bf4999 Mon Sep 17 00:00:00 2001 From: Alon-Ti <54235977+Alon-Ti@users.noreply.github.com> Date: Tue, 4 Jun 2024 21:46:40 +0300 Subject: [PATCH] Ignore memory order in CairoPie validation. (#1780) --- CHANGELOG.md | 2 ++ vm/src/vm/runners/cairo_pie.rs | 17 ++++++++++++++++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 51fe08c42d..106e3419db 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,8 @@ #### Upcoming Changes +* fix: Ignore memory order when comparing instances of `CairoPieMemory` [#1780](https://github.com/lambdaclass/cairo-vm/pull/1780) + * feat: Add `EXCESS_BALANCE` hint [#1777](https://github.com/lambdaclass/cairo-vm/pull/1777) * feat(BREAKING): Use a cheatcode to relocate all dicts + Make temporary segment usage configurable [#1776](https://github.com/lambdaclass/cairo-vm/pull/1776) diff --git a/vm/src/vm/runners/cairo_pie.rs b/vm/src/vm/runners/cairo_pie.rs index 8c5659e748..6caeed250e 100644 --- a/vm/src/vm/runners/cairo_pie.rs +++ b/vm/src/vm/runners/cairo_pie.rs @@ -35,12 +35,27 @@ impl From<(isize, usize)> for SegmentInfo { // A simplified version of Memory, without any additional data besides its elements // Contains all addr-value pairs, ordered by index and offset // Allows practical serialization + conversion between CairoPieMemory & Memory -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq)] +#[derive(Serialize, Deserialize, Clone, Debug, Eq)] pub struct CairoPieMemory( #[serde(serialize_with = "serde_impl::serialize_memory")] pub Vec<((usize, usize), MaybeRelocatable)>, ); +impl PartialEq for CairoPieMemory { + fn eq(&self, other: &Self) -> bool { + fn as_hashmap( + cairo_pie_memory: &CairoPieMemory, + ) -> HashMap<&(usize, usize), &MaybeRelocatable> { + cairo_pie_memory + .0 + .iter() + .map(|tuple| (&tuple.0, &tuple.1)) + .collect::>() + } + as_hashmap(self) == as_hashmap(other) + } +} + #[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq)] pub struct PublicMemoryPage { pub start: usize,