2001-02-17 13:19:19 +01:00
|
|
|
/***********************************************************************
|
|
|
|
Memory primitives
|
|
|
|
|
|
|
|
(c) 1994, 1995 Innobase Oy
|
|
|
|
|
|
|
|
Created 5/30/1994 Heikki Tuuri
|
|
|
|
************************************************************************/
|
|
|
|
|
|
|
|
#ifndef ut0mem_h
|
|
|
|
#define ut0mem_h
|
|
|
|
|
2001-04-20 14:18:46 +02:00
|
|
|
#include "univ.i"
|
2001-02-17 13:19:19 +01:00
|
|
|
#include <string.h>
|
|
|
|
#include <stdlib.h>
|
|
|
|
|
2001-10-10 21:47:08 +02:00
|
|
|
/* The total amount of memory currently allocated from the OS with malloc */
|
|
|
|
extern ulint ut_total_allocated_memory;
|
|
|
|
|
2001-02-17 13:19:19 +01:00
|
|
|
UNIV_INLINE
|
|
|
|
void*
|
|
|
|
ut_memcpy(void* dest, void* sour, ulint n);
|
|
|
|
|
|
|
|
UNIV_INLINE
|
|
|
|
void*
|
|
|
|
ut_memmove(void* dest, void* sour, ulint n);
|
|
|
|
|
|
|
|
UNIV_INLINE
|
|
|
|
int
|
|
|
|
ut_memcmp(void* str1, void* str2, ulint n);
|
|
|
|
|
|
|
|
|
2001-09-20 20:04:48 +02:00
|
|
|
/**************************************************************************
|
|
|
|
Allocates memory. Sets it also to zero if UNIV_SET_MEM_TO_ZERO is
|
|
|
|
defined and set_to_zero is TRUE. */
|
|
|
|
|
2001-02-17 13:19:19 +01:00
|
|
|
void*
|
2001-09-20 20:04:48 +02:00
|
|
|
ut_malloc_low(
|
|
|
|
/*==========*/
|
|
|
|
/* out, own: allocated memory */
|
|
|
|
ulint n, /* in: number of bytes to allocate */
|
|
|
|
ibool set_to_zero); /* in: TRUE if allocated memory should be set
|
|
|
|
to zero if UNIV_SET_MEM_TO_ZERO is defined */
|
|
|
|
/**************************************************************************
|
|
|
|
Allocates memory. Sets it also to zero if UNIV_SET_MEM_TO_ZERO is
|
|
|
|
defined. */
|
|
|
|
|
|
|
|
void*
|
|
|
|
ut_malloc(
|
|
|
|
/*======*/
|
|
|
|
/* out, own: allocated memory */
|
|
|
|
ulint n); /* in: number of bytes to allocate */
|
|
|
|
/**************************************************************************
|
|
|
|
Frees a memory bloock allocated with ut_malloc. */
|
|
|
|
|
|
|
|
void
|
|
|
|
ut_free(
|
|
|
|
/*====*/
|
|
|
|
void* ptr); /* in, own: memory block */
|
|
|
|
/**************************************************************************
|
2003-06-15 00:04:28 +02:00
|
|
|
Frees in shutdown all allocated memory not freed yet. */
|
2001-02-17 13:19:19 +01:00
|
|
|
|
|
|
|
void
|
2001-09-20 20:04:48 +02:00
|
|
|
ut_free_all_mem(void);
|
|
|
|
/*=================*/
|
2001-02-17 13:19:19 +01:00
|
|
|
|
|
|
|
UNIV_INLINE
|
|
|
|
char*
|
|
|
|
ut_strcpy(char* dest, char* sour);
|
|
|
|
|
|
|
|
UNIV_INLINE
|
|
|
|
ulint
|
2002-07-23 17:31:22 +02:00
|
|
|
ut_strlen(const char* str);
|
2001-02-17 13:19:19 +01:00
|
|
|
|
|
|
|
UNIV_INLINE
|
|
|
|
int
|
|
|
|
ut_strcmp(void* str1, void* str2);
|
|
|
|
|
InnoDB cleanup: fixing buffer overflows and quoting of quotes
innobase/dict/dict0crea.c:
Remove unneeded prototypes for static functions
Remove unused parameters from some functions
Replace some assertions with compile-time checks
dict_create_add_foreigns_to_dictionary():
allocate space dynamically for the SQL, and quote quotes
innobase/dict/dict0dict.c:
Remove unnecessary prototypes for static functions
dict_tables_have_same_db(): Remove length limitation
dict_remove_db_name(): Use strchr()
dict_get_db_name_len(): Use strchr()
Replace mem_heap_alloc()+strlen()+memcpy() with mem_heap_strdup()
Remove unnecessary strlen() calls
Allocate space dynamically for generated strings
dict_scan_id(): allow quotes within quoted strings
innobase/dict/dict0load.c:
Remove unnecessary strlen() calls
Replace mem_heap_alloc()+strlen()+memcpy() with mem_heap_strdup()
innobase/dict/dict0mem.c:
Replace mem_heap_alloc()+strlen()+memcpy() with mem_heap_strdup()
innobase/eval/eval0eval.c:
Make TO_CHAR() work with any machine word width
innobase/fil/fil0fil.c:
Replace mem_alloc()+strlen()+strcpy() with mem_strdup()
innobase/ibuf/ibuf0ibuf.c:
Make some global variables static
Add #ifdef UNIV_IBUF_DEBUG around debug statements
innobase/include/data0data.h:
Add #ifdef UNIV_DEBUG around dtuple_validate()
innobase/include/data0data.ic:
Replace = with == in ut_ad(tuple->magic_n == DATA_TUPLE_MAGIC_N)
innobase/include/dict0dict.h:
Add const qualifiers
innobase/include/lock0lock.h:
Add UL suffixes to unsigned long masks
innobase/include/log0log.h:
Remove unused parameter "type" of log_group_write_buf()
innobase/include/mem0mem.h:
Add mem_strdup(), mem_strdupl(), mem_strdupq(), mem_heap_strdup(),
and mem_heap_strdupl()
innobase/include/mem0mem.ic:
Add mem_strdup(), mem_strdupl(), mem_strdupq(), mem_heap_strdup(),
and mem_heap_strdupl()
innobase/include/row0uins.h:
Remove unused parameter "thr" of row_undo_ins()
innobase/include/row0undo.h:
Remvoe unused parameter "thr" of row_undo_search_clust_to_pcur()
innobase/include/ut0byte.h:
Add const qualifier to ut_cpy_in_lower_case()
Remove parameter "len" of ut_cmp_in_lower_case()
innobase/include/ut0mem.h:
Add ut_strlenq(), ut_strcpyq() and ut_memcpyq()
innobase/include/ut0mem.ic:
Add ut_strlenq()
innobase/include/ut0ut.h:
Declare ut_sprintf() as a printf-style function
innobase/lock/lock0lock.c:
lock_clust_rec_modify_check_and_lock(): Remove unused variable "trx"
innobase/log/log0log.c:
Remove unused parameters
innobase/log/log0recv.c:
Remove parameter "type" from log_group_write_buf()
innobase/mem/mem0mem.c:
Simplify the initialization of block->init_block
innobase/mtr/mtr0log.c:
Add a debug assertion to mlog_parse_initial_log_record()
innobase/page/page0cur.c:
Add debug assertion to page_cur_insert_rec_write_log()
Remove hard-coded buffer size in page_cur_parse_insert_rec()
innobase/page/page0page.c:
Remove unneeded variable rec
innobase/pars/pars0opt.c:
Correct a potential buffer overflow
innobase/pars/pars0pars.c:
Replace mem_heap_alloc()+strlen()+memcpy() with mem_heap_strdup()
innobase/row/row0ins.c:
Replace parameter "thr" with "trx" in row_ins_foreign_report_add_err()
Remove unnecessary strlen() call
Use strchr()
innobase/row/row0mysql.c:
Add row_mysql_is_recovered_tmp_table()
Add row_mysql_is_system_table()
Compare reserved table names with exact match
Use strstr() and strchr() and mem_strdupl()
Compute space needed for generated SQL, and allocate it dynamically
innobase/row/row0purge.c:
Remove unused parameters "thr"
innobase/row/row0row.c:
Simplify row_get_clust_rec()
innobase/row/row0uins.c:
Remove unused parameters "thr"
innobase/row/row0umod.c:
Remove unused variable "index"
row_undo_mod_del_unmark_sec_and_undo_update():
Remove parameter "node" and variable "rec"
Remove unused parameters "thr"
innobase/row/row0undo.c:
Remove unused parameters "thr"
innobase/srv/srv0srv.c:
Replace UT_NOT_USED() with __attribute__((unused))
innobase/srv/srv0start.c:
Remove unnecessary strlen() calls
Remove unused parameter "create_new_db" of open_or_create_log_file()
innobase/trx/trx0roll.c:
Replace mem_alloc()+strlen()+memcpy() with mem_strdup()
innobase/trx/trx0sys.c:
Remove unnecessary strlen() call
innobase/ut/ut0byte.c:
Add const qualifier to ut_cpy_in_lower_case()
Remove parameter "len" of ut_cmp_in_lower_case()
innobase/ut/ut0mem.c:
Add ut_strlenq() and ut_memcpyq()
sql/ha_innodb.cc:
Remove parameter "len" of ut_cmp_in_lower_case()
2004-04-01 15:51:34 +02:00
|
|
|
/**************************************************************************
|
|
|
|
Determine the length of a string when it is quoted with ut_strcpyq(). */
|
|
|
|
UNIV_INLINE
|
|
|
|
ulint
|
|
|
|
ut_strlenq(
|
|
|
|
/*=======*/
|
|
|
|
/* out: length of the string when quoted */
|
|
|
|
const char* str, /* in: null-terminated string */
|
|
|
|
char q); /* in: the quote character */
|
|
|
|
|
|
|
|
/**************************************************************************
|
|
|
|
Make a quoted copy of a string. */
|
|
|
|
|
|
|
|
char*
|
|
|
|
ut_strcpyq(
|
|
|
|
/*=======*/
|
|
|
|
/* out: pointer to end of dest */
|
|
|
|
char* dest, /* in: output buffer */
|
|
|
|
char q, /* in: the quote character */
|
|
|
|
const char* src); /* in: null-terminated string */
|
|
|
|
|
|
|
|
/**************************************************************************
|
|
|
|
Make a quoted copy of a fixed-length string. */
|
|
|
|
|
|
|
|
char*
|
|
|
|
ut_memcpyq(
|
|
|
|
/*=======*/
|
|
|
|
/* out: pointer to end of dest */
|
|
|
|
char* dest, /* in: output buffer */
|
|
|
|
char q, /* in: the quote character */
|
|
|
|
const char* src, /* in: string to be quoted */
|
|
|
|
ulint len); /* in: length of src */
|
|
|
|
|
2001-02-17 13:19:19 +01:00
|
|
|
#ifndef UNIV_NONINL
|
|
|
|
#include "ut0mem.ic"
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#endif
|