~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/thr_malloc.cc

  • Committer: Monty Taylor
  • Date: 2008-08-16 21:06:22 UTC
  • Revision ID: monty@inaugust.com-20080816210622-zpnn13unyinqzn72
Updated po files.

Show diffs side-by-side

added added

removed removed

Lines of Context:
17
17
/* Mallocs for used in threads */
18
18
 
19
19
#include <drizzled/server_includes.h>
20
 
#include <drizzled/current_session.h>
21
 
#include <drizzled/error.h>
 
20
#include <drizzled/drizzled_error_messages.h>
22
21
 
23
22
extern "C" {
24
23
  void sql_alloc_error_handler(void)
25
24
  {
26
 
    errmsg_printf(ERRMSG_LVL_ERROR, "%s",ER(ER_OUT_OF_RESOURCES));
 
25
    sql_print_error(ER(ER_OUT_OF_RESOURCES));
27
26
  }
28
27
}
29
28
 
30
 
void init_sql_alloc(MEM_ROOT *mem_root, size_t block_size, size_t pre_alloc)
 
29
void init_sql_alloc(MEM_ROOT *mem_root, uint block_size, uint pre_alloc)
31
30
{
32
31
  init_alloc_root(mem_root, block_size, pre_alloc);
33
32
  mem_root->error_handler=sql_alloc_error_handler;
36
35
 
37
36
void *sql_alloc(size_t Size)
38
37
{
39
 
  MEM_ROOT *root= current_mem_root();
 
38
  MEM_ROOT *root= *(MEM_ROOT **)pthread_getspecific(THR_MALLOC);
40
39
  return alloc_root(root,Size);
41
40
}
42
41
 
80
79
  return pos;
81
80
}
82
81
 
83
 
void sql_element_free(void *)
 
82
void sql_element_free(void *ptr __attribute__((unused)))
84
83
{} /* purecov: deadcode */
85
84
 
86
85
 
87
86
 
88
87
char *sql_strmake_with_convert(const char *str, size_t arg_length,
89
 
                               const CHARSET_INFO * const from_cs,
90
 
                               size_t max_res_length,
91
 
                               const CHARSET_INFO * const to_cs,
92
 
                               size_t *result_length)
 
88
                               const CHARSET_INFO * const from_cs,
 
89
                               size_t max_res_length,
 
90
                               const CHARSET_INFO * const to_cs, size_t *result_length)
93
91
{
94
92
  char *pos;
95
93
  size_t new_length= to_cs->mbmaxlen*arg_length;
102
100
  if ((from_cs == &my_charset_bin) || (to_cs == &my_charset_bin))
103
101
  {
104
102
    // Safety if to_cs->mbmaxlen > 0
105
 
    new_length= cmin(arg_length, max_res_length);
 
103
    new_length= min(arg_length, max_res_length);
106
104
    memcpy(pos, str, new_length);
107
105
  }
108
106
  else
109
107
  {
110
 
    uint32_t dummy_errors;
 
108
    uint dummy_errors;
111
109
    new_length= copy_and_convert((char*) pos, new_length, to_cs, str,
112
110
                                 arg_length, from_cs, &dummy_errors);
113
111
  }