fix ObKVParser problem
This commit is contained in:
		@ -115,13 +115,18 @@ int ObKVParser::parse(const char* data, int64_t data_length)
 | 
			
		||||
{
 | 
			
		||||
  int ret = OB_SUCCESS;
 | 
			
		||||
  bool finish = false;
 | 
			
		||||
  if (OB_ISNULL(data)) {
 | 
			
		||||
  const int64_t length = data_length + 1;
 | 
			
		||||
  if (OB_ISNULL(data) || data_length <= 0) {
 | 
			
		||||
    ret = OB_INVALID_ARGUMENT;
 | 
			
		||||
    LOG_WARN("null data ptr", K(ret));
 | 
			
		||||
  } else if (OB_ISNULL(data_ = static_cast<char *>(allocator_.alloc(length)))) {
 | 
			
		||||
    ret = OB_ALLOCATE_MEMORY_FAILED;
 | 
			
		||||
    LOG_WARN("fail to alloc memory", K(ret), K(length));
 | 
			
		||||
  } else {
 | 
			
		||||
    cur_ = data;
 | 
			
		||||
    data_length_ = data_length;
 | 
			
		||||
    data_ = data;
 | 
			
		||||
    MEMSET(data_, '\0', length);
 | 
			
		||||
    STRNCPY(data_, data, data_length);
 | 
			
		||||
    cur_ = data_;
 | 
			
		||||
    data_length_ = length;
 | 
			
		||||
    if (OB_FAIL(get_token())) {
 | 
			
		||||
      LOG_WARN("failed to  get_token", K(ret));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@ -14,6 +14,7 @@
 | 
			
		||||
#define __OCEANBASE_SHARE_KV_PARSER_H__
 | 
			
		||||
 | 
			
		||||
#include "share/ob_define.h"
 | 
			
		||||
#include "lib/allocator/page_arena.h"
 | 
			
		||||
 | 
			
		||||
namespace oceanbase {
 | 
			
		||||
namespace share {
 | 
			
		||||
@ -85,10 +86,11 @@ private:
 | 
			
		||||
  char key_buf_[MAX_TOKEN_SIZE];
 | 
			
		||||
  char value_buf_[MAX_TOKEN_SIZE];
 | 
			
		||||
  const char* cur_;
 | 
			
		||||
  const char* data_;     // Raw data
 | 
			
		||||
  int64_t data_length_;  // Original data length
 | 
			
		||||
  char* data_;
 | 
			
		||||
  int64_t data_length_;
 | 
			
		||||
  // Call back every time a KV pair is parsed
 | 
			
		||||
  ObKVMatchCb* cb_;
 | 
			
		||||
  common::ObArenaAllocator allocator_;
 | 
			
		||||
 | 
			
		||||
  DISALLOW_COPY_AND_ASSIGN(ObKVParser);
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user