Commit c0364263 authored by unknown's avatar unknown
Browse files

patch fixing after review on patch-fixing of

Bug #5492 
"set @@session.read_rnd_buffer_size=33554432" crashes server on query

1. added warning comments for uint3korr (need one more byte allocated)
2. unsigned long in uint3korr was replaced by unsigned int to 
   avoid problems on 64-bits platforms
3. shorten warning comments in init_rr_cache in sql/records.cc


include/config-win.h:
  1. added warning comments for uint3korr (need one more byte allocated)
  2. unsigned long in uint3korr was replaced by unsigned int to 
     avoid problems on 64-bits platforms
include/my_global.h:
  1. added warning comments for uint3korr (need one more byte allocated)
  2. unsigned long in uint3korr was replaced by unsigned int to 
     avoid problems on 64-bits platforms
sql/records.cc:
  shorten warning comments for my_malloc_lock in init_rr_cache
parent cef86787
Loading
Loading
Loading
Loading
+7 −1
Original line number Diff line number Diff line
@@ -218,7 +218,13 @@ inline double ulonglong2double(ulonglong value)
				  ((uint32) (uchar) (A)[0])))
#define sint4korr(A)	(*((long *) (A)))
#define uint2korr(A)	(*((uint16 *) (A)))
#define uint3korr(A)	(long) (*((unsigned long *) (A)) & 0xFFFFFF)
/*
   ATTENTION !
   
    Please, note, uint3korr reads 4 bytes (not 3) !
    It means, that you have to provide enough allocated space !
*/
#define uint3korr(A)	(long) (*((unsigned int *) (A)) & 0xFFFFFF)
#define uint4korr(A)	(*((unsigned long *) (A)))
#define uint5korr(A)	((ulonglong)(((uint32) ((uchar) (A)[0])) +\
				    (((uint32) ((uchar) (A)[1])) << 8) +\
+7 −1
Original line number Diff line number Diff line
@@ -898,7 +898,13 @@ typedef char bool; /* Ordinary boolean values 0 1 */
				  (((uint32) ((uchar) (A)[1])) << 8) +\
				  (((uint32) ((uchar) (A)[2])) << 16))
#else
#define uint3korr(A)	(long) (*((unsigned long *) (A)) & 0xFFFFFF)
/*
   ATTENTION !
   
    Please, note, uint3korr reads 4 bytes (not 3) !
    It means, that you have to provide enough allocated space !
*/
#define uint3korr(A)	(long) (*((unsigned int *) (A)) & 0xFFFFFF)
#endif
#define uint4korr(A)	(*((unsigned long *) (A)))
#define uint5korr(A)	((ulonglong)(((uint32) ((uchar) (A)[0])) +\
+1 −6
Original line number Diff line number Diff line
@@ -249,12 +249,7 @@ static int init_rr_cache(READ_RECORD *info)
  rec_cache_size=info->cache_records*info->reclength;
  info->rec_cache_size=info->cache_records*info->ref_length;

  /*
      We are going to read the last three bytes of the buffer via uint3korr
      This macro reads actually 4 bytes (for speed)
      So, we have to allocate one more byte at the end of the buffer 
      to avoid memory assertion fault 
  */
  // We have to allocate one more byte to use uint3korr (see comments for it)
  if (info->cache_records <= 2 ||
      !(info->cache=(byte*) my_malloc_lock(rec_cache_size+info->cache_records*
					   info->struct_length+1,