← Back to team overview

maria-developers team mailing list archive

bzr commit into MariaDB 5.1, with Maria 1.5:maria branch (monty:2768) Bug#48357

 

#At lp:maria based on revid:monty@xxxxxxxxxxxx-20091125231823-ausq10s23qyih61x

 2768 Michael Widenius	2009-11-26
      Fix for Bug #48357 SHOW BINLOG EVENTS: Wrong offset or I/O error
      modified:
        sql/log_event.cc

per-file messages:
  sql/log_event.cc
    gcc 4.4.1 assumes that variables that you cast away will not change (strict-aliasing)
    The symptom was that mysql-test-run binlog.binglog_database got errors in the log
=== modified file 'sql/log_event.cc'
--- a/sql/log_event.cc	2009-10-15 21:38:29 +0000
+++ b/sql/log_event.cc	2009-11-26 15:57:05 +0000
@@ -2133,7 +2133,7 @@ void Query_log_event::pack_info(Protocol
 /**
   Utility function for the next method (Query_log_event::write()) .
 */
-static void write_str_with_code_and_len(char **dst, const char *src,
+static void write_str_with_code_and_len(uchar **dst, const char *src,
                                         int len, uint code)
 {
   /*
@@ -2143,7 +2143,7 @@ static void write_str_with_code_and_len(
   DBUG_ASSERT(len <= 255);
   DBUG_ASSERT(src);
   *((*dst)++)= code;
-  *((*dst)++)= (uchar) len;
+  *((*dst)++)= len;
   bmove(*dst, src, len);
   (*dst)+= len;
 }
@@ -2229,7 +2229,7 @@ bool Query_log_event::write(IO_CACHE* fi
   }
   if (catalog_len) // i.e. this var is inited (false for 4.0 events)
   {
-    write_str_with_code_and_len((char **)(&start),
+    write_str_with_code_and_len(&start,
                                 catalog, catalog_len, Q_CATALOG_NZ_CODE);
     /*
       In 5.0.x where x<4 masters we used to store the end zero here. This was
@@ -2267,7 +2267,7 @@ bool Query_log_event::write(IO_CACHE* fi
   {
     /* In the TZ sys table, column Name is of length 64 so this should be ok */
     DBUG_ASSERT(time_zone_len <= MAX_TIME_ZONE_NAME_LENGTH);
-    write_str_with_code_and_len((char **)(&start),
+    write_str_with_code_and_len(&start,
                                 time_zone_str, time_zone_len, Q_TIME_ZONE_CODE);
   }
   if (lc_time_names_number)