From: Richard Mudgett Date: Tue, 14 Jan 2014 21:46:50 +0000 (+0000) Subject: string container: Remove unnecessary RAII_VAR usage and string object lock. X-Git-Tag: 13.0.0-beta1~652 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ed0d083596bd22bf772433ac949f243dfc5fb28c;p=thirdparty%2Fasterisk.git string container: Remove unnecessary RAII_VAR usage and string object lock. ........ Merged revisions 405541 from http://svn.asterisk.org/svn/asterisk/branches/12 git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@405542 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/main/strings.c b/main/strings.c index 6633d5982b..a65df39dac 100644 --- a/main/strings.c +++ b/main/strings.c @@ -177,19 +177,21 @@ struct ao2_container *ast_str_container_alloc_options(enum ao2_container_opts op int ast_str_container_add(struct ao2_container *str_container, const char *add) { - RAII_VAR(char *, ao2_add, ao2_alloc(strlen(add) + 1, NULL), ao2_cleanup); + char *ao2_add; + /* The ao2_add object is immutable so it doesn't need a lock of its own. */ + ao2_add = ao2_alloc_options(strlen(add) + 1, NULL, AO2_ALLOC_OPT_LOCK_NOLOCK); if (!ao2_add) { return -1; } + strcpy(ao2_add, add);/* Safe */ - /* safe strcpy */ - strcpy(ao2_add, add); ao2_link(str_container, ao2_add); + ao2_ref(ao2_add, -1); return 0; } void ast_str_container_remove(struct ao2_container *str_container, const char *remove) { - ao2_find(str_container, remove, OBJ_KEY | OBJ_NODATA | OBJ_UNLINK); + ao2_find(str_container, remove, OBJ_SEARCH_KEY | OBJ_NODATA | OBJ_UNLINK); }