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
redis
Commits
a66dd433
Commit
a66dd433
authored
Jun 23, 2016
by
Salvatore Sanfilippo
Committed by
GitHub
Jun 23, 2016
Browse files
Merge pull request #3331 from yossigo/fix_openkey_crash
Fix occasional RM_OpenKey() crashes.
parents
393c4686
e22f3e40
Changes
1
Hide whitespace changes
Inline
Side-by-side
src/module.c
View file @
a66dd433
...
@@ -163,7 +163,8 @@ void RM_CloseKey(RedisModuleKey *key);
...
@@ -163,7 +163,8 @@ void RM_CloseKey(RedisModuleKey *key);
void
autoMemoryCollect
(
RedisModuleCtx
*
ctx
);
void
autoMemoryCollect
(
RedisModuleCtx
*
ctx
);
robj
**
moduleCreateArgvFromUserFormat
(
const
char
*
cmdname
,
const
char
*
fmt
,
int
*
argcp
,
int
*
flags
,
va_list
ap
);
robj
**
moduleCreateArgvFromUserFormat
(
const
char
*
cmdname
,
const
char
*
fmt
,
int
*
argcp
,
int
*
flags
,
va_list
ap
);
void
moduleReplicateMultiIfNeeded
(
RedisModuleCtx
*
ctx
);
void
moduleReplicateMultiIfNeeded
(
RedisModuleCtx
*
ctx
);
void
RM_ZsetRangeStop
(
RedisModuleKey
*
key
);
void
RM_ZsetRangeStop
(
RedisModuleKey
*
kp
);
static
void
zsetKeyReset
(
RedisModuleKey
*
key
);
/* --------------------------------------------------------------------------
/* --------------------------------------------------------------------------
* Heap allocation raw functions
* Heap allocation raw functions
...
@@ -1060,7 +1061,7 @@ void *RM_OpenKey(RedisModuleCtx *ctx, robj *keyname, int mode) {
...
@@ -1060,7 +1061,7 @@ void *RM_OpenKey(RedisModuleCtx *ctx, robj *keyname, int mode) {
kp
->
value
=
value
;
kp
->
value
=
value
;
kp
->
iter
=
NULL
;
kp
->
iter
=
NULL
;
kp
->
mode
=
mode
;
kp
->
mode
=
mode
;
RM_ZsetRangeStop
(
kp
);
zsetKeyReset
(
kp
);
autoMemoryAdd
(
ctx
,
REDISMODULE_AM_KEY
,
kp
);
autoMemoryAdd
(
ctx
,
REDISMODULE_AM_KEY
,
kp
);
return
(
void
*
)
kp
;
return
(
void
*
)
kp
;
}
}
...
@@ -1446,17 +1447,23 @@ int RM_ZsetScore(RedisModuleKey *key, RedisModuleString *ele, double *score) {
...
@@ -1446,17 +1447,23 @@ int RM_ZsetScore(RedisModuleKey *key, RedisModuleString *ele, double *score) {
* Key API for Sorted Set iterator
* Key API for Sorted Set iterator
* -------------------------------------------------------------------------- */
* -------------------------------------------------------------------------- */
static
void
zsetKeyReset
(
RedisModuleKey
*
key
)
{
key
->
ztype
=
REDISMODULE_ZSET_RANGE_NONE
;
key
->
zcurrent
=
NULL
;
key
->
zer
=
1
;
}
/* Stop a sorted set iteration. */
/* Stop a sorted set iteration. */
void
RM_ZsetRangeStop
(
RedisModuleKey
*
key
)
{
void
RM_ZsetRangeStop
(
RedisModuleKey
*
key
)
{
/* Free resources if needed. */
/* Free resources if needed. */
if
(
key
->
ztype
==
REDISMODULE_ZSET_RANGE_LEX
)
if
(
key
->
ztype
==
REDISMODULE_ZSET_RANGE_LEX
)
{
zslFreeLexRange
(
&
key
->
zlrs
);
zslFreeLexRange
(
&
key
->
zlrs
);
}
/* Setup sensible values so that misused iteration API calls when an
/* Setup sensible values so that misused iteration API calls when an
* iterator is not active will result into something more sensible
* iterator is not active will result into something more sensible
* than crashing. */
* than crashing. */
key
->
ztype
=
REDISMODULE_ZSET_RANGE_NONE
;
zsetKeyReset
(
key
);
key
->
zcurrent
=
NULL
;
key
->
zer
=
1
;
}
}
/* Return the "End of range" flag value to signal the end of the iteration. */
/* Return the "End of range" flag value to signal the end of the iteration. */
...
...
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