diff --git a/src/dev.rs b/src/dev.rs index f89a733b..a2cd62d6 100644 --- a/src/dev.rs +++ b/src/dev.rs @@ -382,7 +382,11 @@ impl MockProver { let original = self.cs.permutations[perm_index] .get_columns() .iter() - .map(|c| self.advice[c.index()].clone()) + .map(|c| match c.column_type() { + Any::Advice => self.advice[c.index()].clone(), + Any::Fixed => self.fixed[c.index()].clone(), + Any::Instance => self.instance[c.index()].clone(), + }) .collect::>(); // Iterate over each column of the permutation diff --git a/src/dev/graph/layout.rs b/src/dev/graph/layout.rs index 58832534..229c7341 100644 --- a/src/dev/graph/layout.rs +++ b/src/dev/graph/layout.rs @@ -187,9 +187,19 @@ impl Layout { if let Some(region) = self.current_region { let region = &mut self.regions[region]; region.columns.insert(column); - let offset = region.offset.unwrap_or(row); + + // The region offset is the earliest row assigned to. + let mut offset = region.offset.unwrap_or(row); + if row < offset { + // The first row assigned was not at offset 0 within the region. + region.rows += offset - row; + offset = row; + } + // The number of rows in this region is the gap between the earliest and + // latest rows assigned. region.rows = cmp::max(region.rows, row - offset + 1); region.offset = Some(offset); + region.cells.push((column, row)); } else { self.loose_cells.push((column, row));