wiced_network_up_default(...) starts with the following lines:
/* Read config */
wiced_dct_read_lock( (void**) &dct_network_config, WICED_TRUE, DCT_NETWORK_CONFIG_SECTION, 0, sizeof(platform_dct_network_config_t) );
*interface = dct_network_config->interface;
wiced_dct_read_unlock( dct_network_config, WICED_FALSE );
The doc for wiced_dct_read_lock and wiced_dct_read_unlock states that the value of ptr_is_writable should match across these two calls. And they don't. Unlock thus does not free the memory allocated by lock.
(When EXTERNAL_DCT is set, the ptr_is_writable is ignored. But this is not always the case)
I think you are right, it's a bug that needs fix.
But when I look at the code the wiced_network_up_default() naming really
makes me confused. What is the *default* meaning?
And what is the *default* meaning in wiced_get_default_ready_interface().
IMHO, use wiced_network_up()/wiced_network_is_up() APIs are enough.