diff --git a/sql/log_event.cc b/sql/log_event.cc
index c99806344767c6e204217128c74e4714e461fc6a..2ca915b0999104c8c301a8f896dfc21b2242ec61 100644
--- a/sql/log_event.cc
+++ b/sql/log_event.cc
@@ -6449,8 +6449,8 @@ int Table_map_log_event::save_field_metadata()
     }
     case MYSQL_TYPE_VARCHAR:
     {
-      short int *x= (short int *)&m_field_metadata[index];
-      int2store(x, m_table->s->field[i]->field_length);
+      char *ptr= (char *)&m_field_metadata[index];
+      int2store(ptr, m_table->s->field[i]->field_length);
       index= index + sizeof(short int);
       break;
     }
diff --git a/sql/rpl_utility.h b/sql/rpl_utility.h
index e4f9690cf616da9154d58e7b3b4e8cb8af3f0b04..0cf077f6481f3d0677c358ff29a839beb506812b 100644
--- a/sql/rpl_utility.h
+++ b/sql/rpl_utility.h
@@ -121,13 +121,9 @@ class table_def
           /*
             These types store two bytes.
           */
-          uint16 *x= (uint16 *)&field_metadata[index];
-#ifdef WORDS_BIGENDIAN
-          m_field_metadata[i]= sint2korr(x);
-#else
-          m_field_metadata[i]= *x;
-#endif
-          index= index + sizeof(short);
+          char *ptr= (char *)&field_metadata[index];
+          m_field_metadata[i]= sint2korr(ptr);
+          index= index + sizeof(short int);
           break;
         }
         case MYSQL_TYPE_NEWDECIMAL: