From: Charlie Brej Date: Wed, 24 Mar 2010 15:55:59 +0000 (+0000) Subject: [script] Strings automatically adopt from the global String template X-Git-Tag: 0.8.0~1 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=fe2ec6ffbf882cedaf361d47eba47d32cd2d6a78;p=thirdparty%2Fplymouth.git [script] Strings automatically adopt from the global String template This means string operations now can be applied on raw strings rather than having to cast them using the String() class template wrapper. String("something").CharAt(3) now becomes simply: "something".CharAt(3) --- diff --git a/src/plugins/splash/script/script-execute.c b/src/plugins/splash/script/script-execute.c index f986957e..19a831d0 100644 --- a/src/plugins/splash/script/script-execute.c +++ b/src/plugins/splash/script/script-execute.c @@ -302,7 +302,18 @@ static script_obj_t *script_evaluate_func (script_state_t *state, this_obj = script_evaluate (state, name_exp->data.dual.sub_a); char *this_key_name = script_obj_as_string (this_key); script_obj_unref (this_key); - func_obj = script_obj_hash_get_element (this_obj, this_key_name); + func_obj = script_obj_hash_peek_element (this_obj, this_key_name); + + if (!func_obj && script_obj_is_string (this_obj)) + { + script_obj_t *string_hash = script_obj_hash_peek_element (state->global, "String"); + func_obj = script_obj_hash_peek_element (string_hash, this_key_name); + script_obj_unref (func_obj); + } + + if (!func_obj) + func_obj = script_obj_hash_get_element (this_obj, this_key_name); + free(this_key_name); } else if (name_exp->type == SCRIPT_EXP_TYPE_TERM_VAR)