diff --git a/builtin.cpp b/builtin.cpp index 260a1722c..4c55b0959 100644 --- a/builtin.cpp +++ b/builtin.cpp @@ -1772,8 +1772,9 @@ static int builtin_function( parser_t &parser, wchar_t **argv ) { function_data_t *d = new function_data_t(); - d->name=halloc_wcsdup( parser.current_block, name); - d->description=desc?halloc_wcsdup( parser.current_block, desc):0; + d->name = name; + if (desc) + d->description = desc; d->events.swap(events); d->shadows = shadows; if (named_arguments.get()) diff --git a/function.cpp b/function.cpp index 8933ebcbc..eda59d6d9 100644 --- a/function.cpp +++ b/function.cpp @@ -160,7 +160,7 @@ void function_init() void function_add( function_data_t *data, const parser_t &parser ) { - CHECK( data->name, ); + CHECK( ! data->name.empty(), ); CHECK( data->definition, ); scoped_lock lock(functions_lock); function_remove( data->name ); @@ -177,7 +177,7 @@ void function_add( function_data_t *data, const parser_t &parser ) info->named_arguments.insert(info->named_arguments.end(), data->named_arguments.begin(), data->named_arguments.end()); } - if (data->description) + if (! data->description.empty()) info->description = data->description; info->definition_file = intern(reader_current_filename()); info->is_autoload = is_autoload; diff --git a/function.h b/function.h index 851cf8aac..6dd1e5d84 100644 --- a/function.h +++ b/function.h @@ -34,11 +34,11 @@ struct function_data_t /** Name of function */ - wchar_t *name; + wcstring name; /** Description of function */ - wchar_t *description; + wcstring description; /** Function definition */