Unverified Commit 922e8342 authored by Weizhen Wang's avatar Weizhen Wang Committed by GitHub

change type of parameter for logv (#471)

Signed-off-by: 's avatarWangweizhen <hawking.rei@gmail.com>

UCP https://github.com/tikv/tikv/issues/6496

Fix this error from clippy.

```
this public function dereferences a raw pointer but is not marked `unsafe`
help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#not_unsafe_ptr_arg_deref

```
parent 1a8d5f48
...@@ -3,10 +3,11 @@ ...@@ -3,10 +3,11 @@
use crocksdb_ffi; use crocksdb_ffi;
use libc::{c_char, c_void}; use libc::{c_char, c_void};
use librocksdb_sys::{DBEnv, DBInfoLogLevel as InfoLogLevel, DBLogger}; use librocksdb_sys::{DBEnv, DBInfoLogLevel as InfoLogLevel, DBLogger};
use std::ffi::{CString, VaList}; use std::ffi::{CStr, CString, VaList};
use std::str;
pub trait Logger: Send + Sync { pub trait Logger: Send + Sync {
fn logv(&self, log_level: InfoLogLevel, format: *const c_char, ap: VaList); fn logv(&self, log_level: InfoLogLevel, format: &str, ap: VaList);
} }
extern "C" fn destructor(ctx: *mut c_void) { extern "C" fn destructor(ctx: *mut c_void) {
...@@ -18,7 +19,8 @@ extern "C" fn destructor(ctx: *mut c_void) { ...@@ -18,7 +19,8 @@ extern "C" fn destructor(ctx: *mut c_void) {
extern "C" fn logv(ctx: *mut c_void, log_level: InfoLogLevel, format: *const c_char, ap: VaList) { extern "C" fn logv(ctx: *mut c_void, log_level: InfoLogLevel, format: *const c_char, ap: VaList) {
unsafe { unsafe {
let logger = &*(ctx as *mut Box<dyn Logger>); let logger = &*(ctx as *mut Box<dyn Logger>);
logger.logv(log_level, format, ap); let format = CStr::from_ptr(format);
logger.logv(log_level, format.to_str().unwrap(), ap);
} }
} }
......
use std::ffi::VaList; use std::ffi::VaList;
use std::sync::atomic::*; use std::sync::{atomic::*, Arc};
use std::sync::Arc;
use std::thread;
use std::time::Duration; use std::time::Duration;
use std::{str, thread};
use super::tempdir_with_prefix; use super::tempdir_with_prefix;
use libc::c_char;
use rocksdb::{DBInfoLogLevel as InfoLogLevel, DBOptions, Logger, DB}; use rocksdb::{DBInfoLogLevel as InfoLogLevel, DBOptions, Logger, DB};
#[derive(Default, Clone)] #[derive(Default, Clone)]
...@@ -26,7 +25,7 @@ struct TestLogger { ...@@ -26,7 +25,7 @@ struct TestLogger {
} }
impl Logger for TestLogger { impl Logger for TestLogger {
fn logv(&self, _log_level: InfoLogLevel, _format: *const c_char, _ap: VaList) { fn logv(&self, _log_level: InfoLogLevel, _format: &str, _ap: VaList) {
self.print.fetch_add(1, Ordering::SeqCst); self.print.fetch_add(1, Ordering::SeqCst);
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment