while (node != NULL)
{
string_list_t next = node->next;
- free (node);
+ dyn_string_delete ((dyn_string_t) node);
node = next;
}
}
/* Write the discriminator. The mangled number is two
less than the discriminator ordinal, counting from
zero. */
- RETURN_IF_ERROR (int_to_dyn_string (discriminator + 2,
+ RETURN_IF_ERROR (int_to_dyn_string (discriminator + 1,
(dyn_string_t) dm->result));
}
else
- {
- if (flag_verbose)
- /* A missing digit correspond to one. */
- RETURN_IF_ERROR (result_add_char (dm, '1'));
- }
+ return STATUS_ERROR;
if (flag_verbose)
RETURN_IF_ERROR (result_add_char (dm, ']'));
}
zero, indicating that some error occurred, or a demangling_t
holding the results. */
static demangling_t
-demangle_v3_with_details (const char *name)
+demangle_v3_with_details (name)
+ const char *name;
{
demangling_t dm;
status_t status;
- '2' if NAME is a base object constructor, or
- '3' if NAME is a complete object allocating constructor. */
enum gnu_v3_ctor_kinds
-is_gnu_v3_mangled_ctor (const char *name)
+is_gnu_v3_mangled_ctor (name)
+ const char *name;
{
demangling_t dm = demangle_v3_with_details (name);
- '1' if NAME is a complete object destructor, or
- '2' if NAME is a base object destructor. */
enum gnu_v3_dtor_kinds
-is_gnu_v3_mangled_dtor (const char *name)
+is_gnu_v3_mangled_dtor (name)
+ const char *name;
{
demangling_t dm = demangle_v3_with_details (name);