You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@thrift.apache.org by "Chris Morgan (JIRA)" <ji...@apache.org> on 2011/02/08 23:08:57 UTC

[jira] Updated: (THRIFT-1057) casts in TBinaryProtocol.tcc causing "dereferencing type-punned pointer will break strict-aliasing rules" warnings from gcc

     [ https://issues.apache.org/jira/browse/THRIFT-1057?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Chris Morgan updated THRIFT-1057:
---------------------------------

    Description: 
Code is doing things like:

{code}
uint8_t b[2];
uint16_t val;

val = *(int16_t*)b;
{code}

Due to aliasing there isn't a guarantee that b[] will be placed on a 16 bit boundary.

Fix is to use unions to ensure alignment. Patch attached.

  was:
Code is doing things like:

uint8_t b[2];
uint16_t val;

val = *(int16_t*)b;

Due to aliasing there isn't a guarantee that b[] will be placed on a 16 bit boundary.

Fix is to use unions to ensure alignment. Patch attached.


> casts in TBinaryProtocol.tcc causing "dereferencing type-punned pointer will break strict-aliasing rules" warnings from gcc 
> ----------------------------------------------------------------------------------------------------------------------------
>
>                 Key: THRIFT-1057
>                 URL: https://issues.apache.org/jira/browse/THRIFT-1057
>             Project: Thrift
>          Issue Type: Bug
>          Components: C++ - Library
>    Affects Versions: 0.7
>            Reporter: Chris Morgan
>
> Code is doing things like:
> {code}
> uint8_t b[2];
> uint16_t val;
> val = *(int16_t*)b;
> {code}
> Due to aliasing there isn't a guarantee that b[] will be placed on a 16 bit boundary.
> Fix is to use unions to ensure alignment. Patch attached.

-- 
This message is automatically generated by JIRA.
-
For more information on JIRA, see: http://www.atlassian.com/software/jira