Skip to content

Commit ed3be29

Browse files
authored
Fix stack overflow in layout tests (#83)
* box some layout struct fields * undo method signature changes
1 parent 69ca634 commit ed3be29

File tree

1 file changed

+67
-69
lines changed

1 file changed

+67
-69
lines changed

plotly/src/layout.rs

Lines changed: 67 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -2462,39 +2462,39 @@ pub struct LayoutTemplate {
24622462
grid: Option<LayoutGrid>,
24632463
#[serde(skip_serializing_if = "Option::is_none")]
24642464
calendar: Option<Calendar>,
2465+
24652466
#[serde(skip_serializing_if = "Option::is_none", rename = "xaxis")]
2466-
x_axis: Option<Axis>,
2467+
x_axis: Option<Box<Axis>>,
24672468
#[serde(skip_serializing_if = "Option::is_none", rename = "yaxis")]
2468-
y_axis: Option<Axis>,
2469-
2469+
y_axis: Option<Box<Axis>>,
24702470
#[serde(skip_serializing_if = "Option::is_none", rename = "xaxis2")]
2471-
x_axis2: Option<Axis>,
2471+
x_axis2: Option<Box<Axis>>,
24722472
#[serde(skip_serializing_if = "Option::is_none", rename = "yaxis2")]
2473-
y_axis2: Option<Axis>,
2473+
y_axis2: Option<Box<Axis>>,
24742474
#[serde(skip_serializing_if = "Option::is_none", rename = "xaxis3")]
2475-
x_axis3: Option<Axis>,
2475+
x_axis3: Option<Box<Axis>>,
24762476
#[serde(skip_serializing_if = "Option::is_none", rename = "yaxis3")]
2477-
y_axis3: Option<Axis>,
2477+
y_axis3: Option<Box<Axis>>,
24782478
#[serde(skip_serializing_if = "Option::is_none", rename = "xaxis4")]
2479-
x_axis4: Option<Axis>,
2479+
x_axis4: Option<Box<Axis>>,
24802480
#[serde(skip_serializing_if = "Option::is_none", rename = "yaxis4")]
2481-
y_axis4: Option<Axis>,
2481+
y_axis4: Option<Box<Axis>>,
24822482
#[serde(skip_serializing_if = "Option::is_none", rename = "xaxis5")]
2483-
x_axis5: Option<Axis>,
2483+
x_axis5: Option<Box<Axis>>,
24842484
#[serde(skip_serializing_if = "Option::is_none", rename = "yaxis5")]
2485-
y_axis5: Option<Axis>,
2485+
y_axis5: Option<Box<Axis>>,
24862486
#[serde(skip_serializing_if = "Option::is_none", rename = "xaxis6")]
2487-
x_axis6: Option<Axis>,
2487+
x_axis6: Option<Box<Axis>>,
24882488
#[serde(skip_serializing_if = "Option::is_none", rename = "yaxis6")]
2489-
y_axis6: Option<Axis>,
2489+
y_axis6: Option<Box<Axis>>,
24902490
#[serde(skip_serializing_if = "Option::is_none", rename = "xaxis7")]
2491-
x_axis7: Option<Axis>,
2491+
x_axis7: Option<Box<Axis>>,
24922492
#[serde(skip_serializing_if = "Option::is_none", rename = "yaxis7")]
2493-
y_axis7: Option<Axis>,
2493+
y_axis7: Option<Box<Axis>>,
24942494
#[serde(skip_serializing_if = "Option::is_none", rename = "xaxis8")]
2495-
x_axis8: Option<Axis>,
2495+
x_axis8: Option<Box<Axis>>,
24962496
#[serde(skip_serializing_if = "Option::is_none", rename = "yaxis8")]
2497-
y_axis8: Option<Axis>,
2497+
y_axis8: Option<Box<Axis>>,
24982498

24992499
// ternary: Option<LayoutTernary>,
25002500
// scene: Option<LayoutScene>,
@@ -2694,82 +2694,82 @@ impl LayoutTemplate {
26942694
}
26952695

26962696
pub fn x_axis(mut self, xaxis: Axis) -> Self {
2697-
self.x_axis = Some(xaxis);
2697+
self.x_axis = Some(Box::new(xaxis));
26982698
self
26992699
}
27002700

27012701
pub fn y_axis(mut self, yaxis: Axis) -> Self {
2702-
self.y_axis = Some(yaxis);
2702+
self.y_axis = Some(Box::new(yaxis));
27032703
self
27042704
}
27052705

27062706
pub fn x_axis2(mut self, xaxis: Axis) -> Self {
2707-
self.x_axis2 = Some(xaxis);
2707+
self.x_axis2 = Some(Box::new(xaxis));
27082708
self
27092709
}
27102710

27112711
pub fn y_axis2(mut self, yaxis: Axis) -> Self {
2712-
self.y_axis2 = Some(yaxis);
2712+
self.y_axis2 = Some(Box::new(yaxis));
27132713
self
27142714
}
27152715

27162716
pub fn x_axis3(mut self, xaxis: Axis) -> Self {
2717-
self.x_axis3 = Some(xaxis);
2717+
self.x_axis3 = Some(Box::new(xaxis));
27182718
self
27192719
}
27202720

27212721
pub fn y_axis3(mut self, yaxis: Axis) -> Self {
2722-
self.y_axis3 = Some(yaxis);
2722+
self.y_axis3 = Some(Box::new(yaxis));
27232723
self
27242724
}
27252725

27262726
pub fn x_axis4(mut self, xaxis: Axis) -> Self {
2727-
self.x_axis4 = Some(xaxis);
2727+
self.x_axis4 = Some(Box::new(xaxis));
27282728
self
27292729
}
27302730

27312731
pub fn y_axis4(mut self, yaxis: Axis) -> Self {
2732-
self.y_axis4 = Some(yaxis);
2732+
self.y_axis4 = Some(Box::new(yaxis));
27332733
self
27342734
}
27352735

27362736
pub fn x_axis5(mut self, xaxis: Axis) -> Self {
2737-
self.x_axis5 = Some(xaxis);
2737+
self.x_axis5 = Some(Box::new(xaxis));
27382738
self
27392739
}
27402740

27412741
pub fn y_axis5(mut self, yaxis: Axis) -> Self {
2742-
self.y_axis5 = Some(yaxis);
2742+
self.y_axis5 = Some(Box::new(yaxis));
27432743
self
27442744
}
27452745

27462746
pub fn x_axis6(mut self, xaxis: Axis) -> Self {
2747-
self.x_axis6 = Some(xaxis);
2747+
self.x_axis6 = Some(Box::new(xaxis));
27482748
self
27492749
}
27502750

27512751
pub fn y_axis6(mut self, yaxis: Axis) -> Self {
2752-
self.y_axis6 = Some(yaxis);
2752+
self.y_axis6 = Some(Box::new(yaxis));
27532753
self
27542754
}
27552755

27562756
pub fn x_axis7(mut self, xaxis: Axis) -> Self {
2757-
self.x_axis7 = Some(xaxis);
2757+
self.x_axis7 = Some(Box::new(xaxis));
27582758
self
27592759
}
27602760

27612761
pub fn y_axis7(mut self, yaxis: Axis) -> Self {
2762-
self.y_axis7 = Some(yaxis);
2762+
self.y_axis7 = Some(Box::new(yaxis));
27632763
self
27642764
}
27652765

27662766
pub fn x_axis8(mut self, xaxis: Axis) -> Self {
2767-
self.x_axis8 = Some(xaxis);
2767+
self.x_axis8 = Some(Box::new(xaxis));
27682768
self
27692769
}
27702770

27712771
pub fn y_axis8(mut self, yaxis: Axis) -> Self {
2772-
self.y_axis8 = Some(yaxis);
2772+
self.y_axis8 = Some(Box::new(yaxis));
27732773
self
27742774
}
27752775

@@ -2945,45 +2945,45 @@ pub struct Layout {
29452945
hover_label: Option<Label>,
29462946

29472947
#[serde(skip_serializing_if = "Option::is_none")]
2948-
template: Option<Cow<'static, Template>>,
2948+
template: Option<Box<Cow<'static, Template>>>,
29492949

29502950
#[serde(skip_serializing_if = "Option::is_none")]
29512951
grid: Option<LayoutGrid>,
29522952
#[serde(skip_serializing_if = "Option::is_none")]
29532953
calendar: Option<Calendar>,
29542954

29552955
#[serde(skip_serializing_if = "Option::is_none", rename = "xaxis")]
2956-
x_axis: Option<Axis>,
2956+
x_axis: Option<Box<Axis>>,
29572957
#[serde(skip_serializing_if = "Option::is_none", rename = "yaxis")]
2958-
y_axis: Option<Axis>,
2958+
y_axis: Option<Box<Axis>>,
29592959
#[serde(skip_serializing_if = "Option::is_none", rename = "xaxis2")]
2960-
x_axis2: Option<Axis>,
2960+
x_axis2: Option<Box<Axis>>,
29612961
#[serde(skip_serializing_if = "Option::is_none", rename = "yaxis2")]
2962-
y_axis2: Option<Axis>,
2962+
y_axis2: Option<Box<Axis>>,
29632963
#[serde(skip_serializing_if = "Option::is_none", rename = "xaxis3")]
2964-
x_axis3: Option<Axis>,
2964+
x_axis3: Option<Box<Axis>>,
29652965
#[serde(skip_serializing_if = "Option::is_none", rename = "yaxis3")]
2966-
y_axis3: Option<Axis>,
2966+
y_axis3: Option<Box<Axis>>,
29672967
#[serde(skip_serializing_if = "Option::is_none", rename = "xaxis4")]
2968-
x_axis4: Option<Axis>,
2968+
x_axis4: Option<Box<Axis>>,
29692969
#[serde(skip_serializing_if = "Option::is_none", rename = "yaxis4")]
2970-
y_axis4: Option<Axis>,
2970+
y_axis4: Option<Box<Axis>>,
29712971
#[serde(skip_serializing_if = "Option::is_none", rename = "xaxis5")]
2972-
x_axis5: Option<Axis>,
2972+
x_axis5: Option<Box<Axis>>,
29732973
#[serde(skip_serializing_if = "Option::is_none", rename = "yaxis5")]
2974-
y_axis5: Option<Axis>,
2974+
y_axis5: Option<Box<Axis>>,
29752975
#[serde(skip_serializing_if = "Option::is_none", rename = "xaxis6")]
2976-
x_axis6: Option<Axis>,
2976+
x_axis6: Option<Box<Axis>>,
29772977
#[serde(skip_serializing_if = "Option::is_none", rename = "yaxis6")]
2978-
y_axis6: Option<Axis>,
2978+
y_axis6: Option<Box<Axis>>,
29792979
#[serde(skip_serializing_if = "Option::is_none", rename = "xaxis7")]
2980-
x_axis7: Option<Axis>,
2980+
x_axis7: Option<Box<Axis>>,
29812981
#[serde(skip_serializing_if = "Option::is_none", rename = "yaxis7")]
2982-
y_axis7: Option<Axis>,
2982+
y_axis7: Option<Box<Axis>>,
29832983
#[serde(skip_serializing_if = "Option::is_none", rename = "xaxis8")]
2984-
x_axis8: Option<Axis>,
2984+
x_axis8: Option<Box<Axis>>,
29852985
#[serde(skip_serializing_if = "Option::is_none", rename = "yaxis8")]
2986-
y_axis8: Option<Axis>,
2986+
y_axis8: Option<Box<Axis>>,
29872987

29882988
// ternary: Option<LayoutTernary>,
29892989
// scene: Option<LayoutScene>,
@@ -3187,82 +3187,82 @@ impl Layout {
31873187
}
31883188

31893189
pub fn x_axis(mut self, xaxis: Axis) -> Self {
3190-
self.x_axis = Some(xaxis);
3190+
self.x_axis = Some(Box::new(xaxis));
31913191
self
31923192
}
31933193

31943194
pub fn y_axis(mut self, yaxis: Axis) -> Self {
3195-
self.y_axis = Some(yaxis);
3195+
self.y_axis = Some(Box::new(yaxis));
31963196
self
31973197
}
31983198

31993199
pub fn x_axis2(mut self, xaxis: Axis) -> Self {
3200-
self.x_axis2 = Some(xaxis);
3200+
self.x_axis2 = Some(Box::new(xaxis));
32013201
self
32023202
}
32033203

32043204
pub fn y_axis2(mut self, yaxis: Axis) -> Self {
3205-
self.y_axis2 = Some(yaxis);
3205+
self.y_axis2 = Some(Box::new(yaxis));
32063206
self
32073207
}
32083208

32093209
pub fn x_axis3(mut self, xaxis: Axis) -> Self {
3210-
self.x_axis3 = Some(xaxis);
3210+
self.x_axis3 = Some(Box::new(xaxis));
32113211
self
32123212
}
32133213

32143214
pub fn y_axis3(mut self, yaxis: Axis) -> Self {
3215-
self.y_axis3 = Some(yaxis);
3215+
self.y_axis3 = Some(Box::new(yaxis));
32163216
self
32173217
}
32183218

32193219
pub fn x_axis4(mut self, xaxis: Axis) -> Self {
3220-
self.x_axis4 = Some(xaxis);
3220+
self.x_axis4 = Some(Box::new(xaxis));
32213221
self
32223222
}
32233223

32243224
pub fn y_axis4(mut self, yaxis: Axis) -> Self {
3225-
self.y_axis4 = Some(yaxis);
3225+
self.y_axis4 = Some(Box::new(yaxis));
32263226
self
32273227
}
32283228

32293229
pub fn x_axis5(mut self, xaxis: Axis) -> Self {
3230-
self.x_axis5 = Some(xaxis);
3230+
self.x_axis5 = Some(Box::new(xaxis));
32313231
self
32323232
}
32333233

32343234
pub fn y_axis5(mut self, yaxis: Axis) -> Self {
3235-
self.y_axis5 = Some(yaxis);
3235+
self.y_axis5 = Some(Box::new(yaxis));
32363236
self
32373237
}
32383238

32393239
pub fn x_axis6(mut self, xaxis: Axis) -> Self {
3240-
self.x_axis6 = Some(xaxis);
3240+
self.x_axis6 = Some(Box::new(xaxis));
32413241
self
32423242
}
32433243

32443244
pub fn y_axis6(mut self, yaxis: Axis) -> Self {
3245-
self.y_axis6 = Some(yaxis);
3245+
self.y_axis6 = Some(Box::new(yaxis));
32463246
self
32473247
}
32483248

32493249
pub fn x_axis7(mut self, xaxis: Axis) -> Self {
3250-
self.x_axis7 = Some(xaxis);
3250+
self.x_axis7 = Some(Box::new(xaxis));
32513251
self
32523252
}
32533253

32543254
pub fn y_axis7(mut self, yaxis: Axis) -> Self {
3255-
self.y_axis7 = Some(yaxis);
3255+
self.y_axis7 = Some(Box::new(yaxis));
32563256
self
32573257
}
32583258

32593259
pub fn x_axis8(mut self, xaxis: Axis) -> Self {
3260-
self.x_axis8 = Some(xaxis);
3260+
self.x_axis8 = Some(Box::new(xaxis));
32613261
self
32623262
}
32633263

32643264
pub fn y_axis8(mut self, yaxis: Axis) -> Self {
3265-
self.y_axis8 = Some(yaxis);
3265+
self.y_axis8 = Some(Box::new(yaxis));
32663266
self
32673267
}
32683268

@@ -3304,7 +3304,7 @@ impl Layout {
33043304
where
33053305
T: Into<Cow<'static, Template>>,
33063306
{
3307-
self.template = Some(template.into());
3307+
self.template = Some(Box::new(template.into()));
33083308
self
33093309
}
33103310

@@ -4323,7 +4323,6 @@ mod tests {
43234323
}
43244324

43254325
#[test]
4326-
#[ignore] // causes stack overflow on debug builds, but passes on release builds
43274326
fn test_serialize_layout_template() {
43284327
let layout_template = LayoutTemplate::new()
43294328
.title("Title".into())
@@ -4466,7 +4465,6 @@ mod tests {
44664465
}
44674466

44684467
#[test]
4469-
#[ignore] // causes stack overflow on debug builds, but passes on release builds
44704468
fn test_serialize_layout() {
44714469
let layout = Layout::new()
44724470
.title("Title".into())

0 commit comments

Comments
 (0)