[MPlayer-dev-eng] CONF_TYPE_STRING issue
Ingo Brückl
ib at wupperonline.de
Fri May 13 11:54:49 CEST 2011
I wrote on Fri, 06 May 2011 12:00:30 +0200:
> Reimar Döffinger wrote on Thu, 5 May 2011 18:28:03 +0200:
>>> Wouldn't this give direct access to the slot data, meaning that changing
>>> the variable (for what reason ever) disables later restoring it from the
>>> initial config parsed value?
>> By what I can tell from the code it's not supposed to restore to the
>> config parsed value.
> If so, ok, although the slot data (copy) seems useless then.
>> However I realized it didn't quite do what I intended, does attached
>> patch look better to you?
> I don't can say much about @@ -342,10 +343,7 @@ in m_config.c, but that's
> only due to my lack of complete understanding of the config code.
> The rest looks good.
>> It should avoid the issue you pointed out: setting the variable to
>> a non-malloced value. It is not necessary to support it, but if we can...
> Well, that allows the non-malloced value *after* parsing, but now disallows
> a malloced value. (I'm not sure which is the better. Please remember that
> there wouldn't be a problem at all with a non-malloced value *default*
> value, i.e. set *before* parsing.)
> Although I think that
> free(option);
> option = strdup("new_option");
> is a much more allowable thing to do after parsing (more allowable at least
> than
> option = "new_option";
> after parsing), I admit that the former now only will end up where we
> started from - allocated (config) memory, not getting freed (whereas my
> approach crashes at the latter).
> On the other hand, if you have to change an option after parsing, because
> you have - for example - a config dialog and an input box where you give
> the new value, it's most certainly the former code you are using.
> So now:
> option = "new_option"; // is ok
> free(option); option = strdup("new_option"); // is not ok...
> // ...use this instead
> m_config_set_option(conf, "option_name", "new_option");
> Not really satisfying.
> All in all, freeing the variable and considering a non-malloced value
> *after* parsing a programming error (because m_config_set_option() should
> be used to change options) would be much simpler in both understanding and
> new code size, wouldn't it?
Ping.
Still an open issue.
Ingo
More information about the MPlayer-dev-eng
mailing list