Navigation Menu

Skip to content

Commit

Permalink
[i386] suppress strict-aliasing warnings. fixes [groonga-dev, 00659]
Browse files Browse the repository at this point in the history
warning message:
dereferencing type-punned pointer will break strict-aliasing rules.

Reported by Kazuhiko. Thanks!!!
  • Loading branch information
kou committed Dec 16, 2011
1 parent aed7bf6 commit fcfa60e
Showing 1 changed file with 14 additions and 10 deletions.
24 changes: 14 additions & 10 deletions ha_mroonga.cc
Expand Up @@ -704,12 +704,13 @@ static uchar *mrn_multiple_column_key_encode(KEY *key_info,
enum {
TYPE_LONG_LONG_NUMBER,
TYPE_NUMBER,
TYPE_FLOAT,
TYPE_DOUBLE,
TYPE_BYTE_SEQUENCE
} data_type;
uint32 data_size;
long long int long_long_value;
double float_value;
float float_value;
double double_value;
switch (field->type()) {
case MYSQL_TYPE_BIT:
case MYSQL_TYPE_ENUM:
Expand All @@ -735,14 +736,15 @@ static uchar *mrn_multiple_column_key_encode(KEY *key_info,
data_size = 8;
break;
case MYSQL_TYPE_FLOAT:
data_type = TYPE_FLOAT;
data_type = TYPE_DOUBLE;
data_size = 8;
float4get(float_value, current_key);
double_value = float_value;
break;
case MYSQL_TYPE_DOUBLE:
data_type = TYPE_FLOAT;
data_type = TYPE_DOUBLE;
data_size = 8;
float8get(float_value, current_key);
float8get(double_value, current_key);
break;
case MYSQL_TYPE_TIME:
case MYSQL_TYPE_YEAR:
Expand Down Expand Up @@ -782,9 +784,9 @@ static uchar *mrn_multiple_column_key_encode(KEY *key_info,
}
}
break;
case TYPE_FLOAT:
case TYPE_DOUBLE:
{
long_long_value = (long long int)(float_value);
long_long_value = (long long int)(double_value);
long_long_value ^= ((long_long_value >> 63) | (1LL << 63));
mrn_byte_order_host_to_network(current_buffer, &long_long_value,
data_size);
Expand Down Expand Up @@ -850,9 +852,11 @@ static int mrn_set_key_buf(grn_ctx *ctx, Field *field,
}
case MYSQL_TYPE_FLOAT:
{
double val;
float4get(val, ptr);
memcpy(buf, &val, 8);
float float_value;
double double_value;
float4get(float_value, ptr);
double_value = float_value;
memcpy(buf, &double_value, 8);
*size = 8;
break;
}
Expand Down

0 comments on commit fcfa60e

Please sign in to comment.