diff options
author | Corey Farrell <git@cfware.com> | 2015-04-29 00:35:22 -0400 |
---|---|---|
committer | Corey Farrell <git@cfware.com> | 2015-04-29 13:28:54 -0400 |
commit | c9c03998cc9c57acbf1998a0cbc0bc1fa6d24edb (patch) | |
tree | bd11b677fedc5ff69bbad932a55b99854c09f023 /tests | |
parent | ed5715eb3994d08fdf81001dabdb39b171a308ac (diff) |
Astobj2: Add ao2_weakproxy_ref_object function.
This function allows code to run ao2_ref against the real
object associated with a weakproxy. It is useful when
all of the following conditions are true:
* You have a pointer to weakproxy.
* You do not have or need a pointer to the real object.
* You need to ensure the real object exists and is not
destroyed during a process.
In this case it's wasteful to store a pointer to the real
object just for the sake of releasing it later.
Change-Id: I38a319b83314de75be74207a8771aab269bcca46
Diffstat (limited to 'tests')
-rw-r--r-- | tests/test_astobj2_weaken.c | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/tests/test_astobj2_weaken.c b/tests/test_astobj2_weaken.c index e53ab7a00..6a5eaeb99 100644 --- a/tests/test_astobj2_weaken.c +++ b/tests/test_astobj2_weaken.c @@ -223,7 +223,29 @@ AST_TEST_DEFINE(astobj2_weak1) goto fail_cleanup; } + if (ao2_t_weakproxy_ref_object(obj3, +1, 0, "ao2_ref should never see this") != -2) { + ast_test_status_update(test, + "Expected -2 from ao2_t_weakproxy_ref_object against normal ao2 object.\n"); + goto fail_cleanup; + } + + if (ao2_t_weakproxy_ref_object(weakref2, +1, 0, "weakref2 ref_object") != 2) { + ast_test_status_update(test, "Expected 2 from weakref2 ref_object.\n"); + goto fail_cleanup; + } + + if (ao2_t_ref(obj3, -1, "balance weakref2 ref_object") != 3) { + ast_test_status_update(test, "Expected 3 from obj3 ao2_t_ref.\n"); + goto fail_cleanup; + } + ao2_ref(obj3, -1); + + if (ao2_weakproxy_ref_object(weakref2, +1, 0) != -1) { + ast_test_status_update(test, "Expected -1 from weakref2 ref_object because obj3 is gone.\n"); + goto fail_cleanup; + } + ao2_t_ref(weakref2, -1, "weakref2"); if (!weakproxydestroyed) { |