Skip to content

Commit 491cb35

Browse files
Fix_handling_of_substasks_program_input (#302)
1 parent 90e8740 commit 491cb35

File tree

2 files changed

+10
-3
lines changed

2 files changed

+10
-3
lines changed

crates/cairo-program-runner-lib/src/hints/applicative_bootloader_hints.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ use crate::hints::{
1818
add_consecutive_output_pages, write_to_fact_topologies_file, GPS_FACT_TOPOLOGY,
1919
},
2020
types::BOOTLOADER_CONFIG_SIZE,
21+
utils::get_program_input_value,
2122
};
2223

2324
use super::{
@@ -56,9 +57,8 @@ pub fn prepare_aggregator_simple_bootloader_output_segment(
5657
ids_data: &HashMap<String, HintReference>,
5758
ap_tracking: &ApTracking,
5859
) -> Result<(), HintError> {
59-
let program_input: &String = exec_scopes.get_ref(vars::PROGRAM_INPUT)?;
6060
let applicative_bootloader_input: ApplicativeBootloaderInput =
61-
serde_json::from_str(program_input).unwrap();
61+
get_program_input_value(exec_scopes)?;
6262
// Python: ids.aggregator_output_ptr = segments.add()
6363
let new_segment_base = vm.add_memory_segment();
6464
insert_value_from_var_name(

crates/cairo-program-runner-lib/src/hints/execute_task_hints.rs

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
use std::any::Any;
22
use std::collections::HashMap;
3+
use std::path::{Path, PathBuf};
34
use std::rc::Rc;
45
use std::vec;
56

@@ -34,6 +35,7 @@ use crate::hints::program_hash::compute_program_hash_chain;
3435
use crate::hints::program_loader::ProgramLoader;
3536
use crate::hints::types::{BootloaderVersion, Task};
3637
use crate::hints::vars;
38+
use crate::ProgramInput;
3739

3840
pub fn felt_to_felt252(field_element: Felt) -> Felt252 {
3941
let bytes = field_element.to_bytes_be();
@@ -413,7 +415,12 @@ pub fn setup_subtask_for_execution(
413415
match &*task {
414416
Task::Cairo0Program(cairo0_executable) => {
415417
if let Some(program_input) = cairo0_executable.program_input.as_ref() {
416-
new_task_locals.insert(PROGRAM_INPUT.to_string(), any_box![program_input.clone()]);
418+
let program_input = if Path::new(program_input).is_file() {
419+
ProgramInput::Path(PathBuf::from(program_input))
420+
} else {
421+
ProgramInput::Json(program_input.clone())
422+
};
423+
new_task_locals.insert(PROGRAM_INPUT.to_string(), any_box![program_input]);
417424
}
418425

419426
process_program_common_logic(

0 commit comments

Comments
 (0)