mirror of
https://github.com/mdbtools/mdbtools.git
synced 2025-09-19 02:27:55 +08:00
Clean up mdb_clone_handle
This commit is contained in:
@@ -268,17 +268,19 @@ typedef struct {
|
|||||||
unsigned int cur_pos;
|
unsigned int cur_pos;
|
||||||
unsigned char pg_buf[MDB_PGSIZE];
|
unsigned char pg_buf[MDB_PGSIZE];
|
||||||
unsigned char alt_pg_buf[MDB_PGSIZE];
|
unsigned char alt_pg_buf[MDB_PGSIZE];
|
||||||
|
MdbFormatConstants *fmt;
|
||||||
|
char date_fmt[64];
|
||||||
|
const char *boolean_false_value;
|
||||||
|
const char *boolean_true_value;
|
||||||
unsigned int num_catalog;
|
unsigned int num_catalog;
|
||||||
|
|
||||||
|
// Non-cloneable fields start here
|
||||||
GPtrArray *catalog;
|
GPtrArray *catalog;
|
||||||
MdbBackend *default_backend;
|
MdbBackend *default_backend;
|
||||||
char *backend_name;
|
char *backend_name;
|
||||||
struct S_MdbTableDef *relationships_table;
|
struct S_MdbTableDef *relationships_table;
|
||||||
char *relationships_values[5];
|
char *relationships_values[5];
|
||||||
MdbFormatConstants *fmt;
|
|
||||||
MdbStatistics *stats;
|
MdbStatistics *stats;
|
||||||
char date_fmt[64];
|
|
||||||
const char *boolean_false_value;
|
|
||||||
const char *boolean_true_value;
|
|
||||||
GHashTable *backends;
|
GHashTable *backends;
|
||||||
#ifdef HAVE_ICONV
|
#ifdef HAVE_ICONV
|
||||||
iconv_t iconv_in;
|
iconv_t iconv_in;
|
||||||
|
@@ -17,6 +17,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include <inttypes.h>
|
#include <inttypes.h>
|
||||||
|
#include <stddef.h>
|
||||||
#include "mdbtools.h"
|
#include "mdbtools.h"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -323,18 +324,20 @@ MdbHandle *mdb_clone_handle(MdbHandle *mdb)
|
|||||||
unsigned int i;
|
unsigned int i;
|
||||||
|
|
||||||
newmdb = (MdbHandle *) g_memdup(mdb, sizeof(MdbHandle));
|
newmdb = (MdbHandle *) g_memdup(mdb, sizeof(MdbHandle));
|
||||||
newmdb->stats = NULL;
|
|
||||||
|
memset(newmdb + offsetof(MdbHandle, catalog), 0,
|
||||||
|
sizeof(MdbHandle) - offsetof(MdbHandle, catalog));
|
||||||
|
|
||||||
newmdb->catalog = g_ptr_array_new();
|
newmdb->catalog = g_ptr_array_new();
|
||||||
for (i=0;i<mdb->num_catalog;i++) {
|
for (i=0;i<mdb->num_catalog;i++) {
|
||||||
entry = g_ptr_array_index(mdb->catalog,i);
|
entry = g_ptr_array_index(mdb->catalog,i);
|
||||||
data = g_memdup(entry,sizeof(MdbCatalogEntry));
|
data = g_memdup(entry,sizeof(MdbCatalogEntry));
|
||||||
|
data->mdb = newmdb;
|
||||||
data->props = NULL;
|
data->props = NULL;
|
||||||
g_ptr_array_add(newmdb->catalog, data);
|
g_ptr_array_add(newmdb->catalog, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
mdb_iconv_init(newmdb);
|
mdb_iconv_init(newmdb);
|
||||||
newmdb->backends = NULL;
|
|
||||||
newmdb->backend_name = NULL;
|
|
||||||
newmdb->default_backend = NULL;
|
|
||||||
mdb_set_default_backend(newmdb, mdb->backend_name);
|
mdb_set_default_backend(newmdb, mdb->backend_name);
|
||||||
|
|
||||||
if (mdb->f) {
|
if (mdb->f) {
|
||||||
|
Reference in New Issue
Block a user