Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
ruanhaishen
hiredis
Commits
74d000ae
Commit
74d000ae
authored
Sep 30, 2011
by
Pieter Noordhuis
Browse files
Implement redis_object destroy callback
parent
5bd66cae
Changes
2
Hide whitespace changes
Inline
Side-by-side
object.c
View file @
74d000ae
...
...
@@ -159,7 +159,12 @@ static int _object_nil_cb(redis_parser *parser, redis_protocol *p) {
}
static
void
_object_destroy_cb
(
redis_parser
*
parser
,
redis_protocol
*
p
)
{
assert
(
NULL
);
redis_object
*
self
;
((
void
)
parser
);
self
=
p
->
data
;
redis_object_free
(
&
self
);
}
/* Set of callbacks that can be passed to the parser. */
...
...
test/test-object.c
View file @
74d000ae
...
...
@@ -215,6 +215,22 @@ void test_empty_error(redis_parser *parser) {
redis_object_free
(
&
obj
);
}
void
test_destroy_callback
(
redis_parser
*
parser
)
{
const
char
*
buf
=
"+ok
\r
"
;
redis_protocol
*
res
;
redis_parser_init
(
parser
,
&
redis_object_parser_callbacks
);
assert
(
redis_parser_execute
(
parser
,
&
res
,
buf
,
strlen
(
buf
))
==
strlen
(
buf
));
assert
(
res
==
NULL
);
assert
(
redis_parser_err
(
parser
)
==
RPE_OK
);
/* Go ahead and let the parser clean up */
redis_parser_destroy
(
parser
);
/* No way to check if the temporary object gets properly free'd.
* Let's hope that Valgrind starts complaining when this is buggy. */
}
int
main
(
int
argc
,
char
**
argv
)
{
redis_parser
*
parser
=
malloc
(
sizeof
(
redis_parser
));
...
...
@@ -237,6 +253,8 @@ int main(int argc, char **argv) {
test_error
(
parser
);
test_empty_error
(
parser
);
test_destroy_callback
(
parser
);
free
(
parser
);
return
0
;
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment