diff options
Diffstat (limited to 'src/cursor/cur_std.c')
-rw-r--r-- | src/cursor/cur_std.c | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/src/cursor/cur_std.c b/src/cursor/cur_std.c index 562c8362419..27659070d15 100644 --- a/src/cursor/cur_std.c +++ b/src/cursor/cur_std.c @@ -371,12 +371,12 @@ err: if (cursor != NULL) */ int __wt_cursor_init(WT_CURSOR *cursor, - const char *uri, WT_CURSOR *owner, const char *cfg[]) + const char *uri, WT_CURSOR *owner, const char *cfg[], WT_CURSOR **cursorp) { + WT_CURSOR *cdump; WT_CONFIG_ITEM cval; WT_SESSION_IMPL *session; - WT_UNUSED(cfg); session = (WT_SESSION_IMPL *)cursor->session; if (cursor->get_key == NULL) @@ -407,11 +407,12 @@ __wt_cursor_init(WT_CURSOR *cursor, WT_RET(__wt_config_gets(session, cfg, "dump", &cval)); if (cval.len != 0) { - __wt_curdump_init(cursor); - F_SET(cursor, - strncmp(cval.str, "print", cval.len) == 0 ? + F_SET(cursor, (strncmp(cval.str, "print", cval.len) == 0) ? WT_CURSTD_DUMP_PRINT : WT_CURSTD_DUMP_HEX); - } + WT_RET(__wt_curdump_create(cursor, owner, &cdump)); + owner = cdump; + } else + cdump = NULL; WT_RET(__wt_config_gets(session, cfg, "raw", &cval)); if (cval.val != 0) @@ -434,6 +435,7 @@ __wt_cursor_init(WT_CURSOR *cursor, F_SET(cursor, WT_CURSTD_OPEN); + *cursorp = (cdump != NULL) ? cdump : cursor; return (0); } |