diff --git a/src/binary_c_python_api.c b/src/binary_c_python_api.c index 973a0253983fafb7847297fdc8140346887496fa..d71cb8f47771eec7fa95b50d02c9e176b0219ead 100644 --- a/src/binary_c_python_api.c +++ b/src/binary_c_python_api.c @@ -71,7 +71,8 @@ int run_system(char * argstring, store = NULL; } - struct persistent_data_t * persistent_data; + // persistent_data + struct persistent_data_t * persistent_data = NULL; /* make new stardata */ stardata = NULL; @@ -79,7 +80,7 @@ int run_system(char * argstring, NULL, // previous_stardatas NULL, // preferences &store, // store - NULL, // persistent_data TODO: see if this use is correct + &persistent_data, // persistent_data TODO: see if this use is correct &argstring, // argv -1 // argc ); @@ -117,26 +118,23 @@ int run_system(char * argstring, /* get error buffer pointer */ binary_c_error_buffer(stardata,error_buffer); - - /* set raw_buffer_size = -1 to prevent it being freed */ - stardata->tmpstore->raw_buffer_size = -1; + + /* Determine whether to free the store memory adress*/ + Boolean free_store = FALSE; + if (store_memaddr == -1) + { + Boolean free_store = TRUE; + } /* free stardata (except the buffer) */ binary_c_free_memory(&stardata, // Stardata TRUE, // free_preferences TRUE, // free_stardata - FALSE, // free_store + free_store, // free_store FALSE, // free_raw_buffer TRUE // free_persistent TODO: check if this is correct here ); - // add flag or logic to free store contents. - if (store_memaddr == -1) - { - binary_c_free_store_contents(store); - } - - // TODO: Ask rob whether to free the memory here or not? or to free it manually. return 0; } @@ -188,21 +186,15 @@ int return_arglines(char ** const buffer, /* get error buffer pointer */ binary_c_error_buffer(stardata,error_buffer); - /* set raw_buffer_size = -1 to prevent it being freed */ - stardata->tmpstore->raw_buffer_size = -1; - /* free stardata (except the buffer) */ binary_c_free_memory(&stardata, // Stardata TRUE, // free_preferences TRUE, // free_stardata - FALSE, // free_store + TRUE, // free_store FALSE, // free_raw_buffer TRUE // free_persistent TODO: check if this is correct here ); - // TODO: check what this does - binary_c_free_store_contents(store); - return 0; } @@ -239,10 +231,7 @@ int return_help_info(char * argstring, /* get error buffer pointer */ binary_c_error_buffer(stardata,error_buffer); - - /* set raw_buffer_size = -1 to prevent it being freed */ - stardata->tmpstore->raw_buffer_size = -1; - + /* free stardata (except the buffer) */ binary_c_free_memory(&stardata, // Stardata TRUE, // free_preferences @@ -290,10 +279,7 @@ int return_help_all_info(char ** const buffer, /* get error buffer pointer */ binary_c_error_buffer(stardata,error_buffer); - - /* set raw_buffer_size = -1 to prevent it being freed */ - stardata->tmpstore->raw_buffer_size = -1; - + /* free stardata (except the buffer) */ binary_c_free_memory(&stardata, // Stardata TRUE, // free_preferences @@ -342,9 +328,6 @@ int return_version_info(char ** const buffer, /* get error buffer pointer */ binary_c_error_buffer(stardata,error_buffer); - /* set raw_buffer_size = -1 to prevent it being freed */ - stardata->tmpstore->raw_buffer_size = -1; - /* free stardata (except the buffer) */ binary_c_free_memory(&stardata, // Stardata TRUE, // free_preferences @@ -392,10 +375,7 @@ long int return_store(char * argstring, /* get error buffer pointer */ binary_c_error_buffer(stardata, error_buffer); - - /* set raw_buffer_size = -1 to prevent it being freed */ - stardata->tmpstore->raw_buffer_size = -1; - + /* free stardata (except the buffer) */ binary_c_free_memory(&stardata, // Stardata TRUE, // free_preferences diff --git a/tests/test_run_system.py b/tests/test_run_system.py new file mode 100644 index 0000000000000000000000000000000000000000..8bebfa99db67a8764d1ce007a6d8d26ef688a7e7 --- /dev/null +++ b/tests/test_run_system.py @@ -0,0 +1,34 @@ +import binary_c_python_api + + +import textwrap + + +# Evolution functions +def test_run_system(): + m1 = 15.0 # Msun + m2 = 14.0 # Msun + separation = 0 # 0 = ignored, use period + orbital_period = 4530.0 # days + eccentricity = 0.0 + metallicity = 0.02 + max_evolution_time = 15000 + argstring = "binary_c M_1 {0:g} M_2 {1:g} separation {2:g} orbital_period {3:g} eccentricity {4:g} metallicity {5:g} max_evolution_time {6:g} ".format( + m1, + m2, + separation, + orbital_period, + eccentricity, + metallicity, + max_evolution_time, + ) + + output = binary_c_python_api.run_system(argstring=argstring) + + print("function: test_run_system") + print("Binary_c output:") + print(textwrap.indent(output, "\t")) + +#### +if __name__ == "__main__": + test_run_system()