Kaydet (Commit) 424dcd68 authored tarafından Caolán McNamara's avatar Caolán McNamara

targeting gcc 4.6.1 gentoo strict-aliasing warnings

üst 28da0ea3
...@@ -184,72 +184,57 @@ inline void _copyConstructAnyFromData( ...@@ -184,72 +184,57 @@ inline void _copyConstructAnyFromData(
{ {
case typelib_TypeClass_CHAR: case typelib_TypeClass_CHAR:
pDestAny->pData = &pDestAny->pReserved; pDestAny->pData = &pDestAny->pReserved;
*(sal_Unicode *)&pDestAny->pReserved = *(sal_Unicode *)pSource; *(sal_Unicode *)pDestAny->pData = *(sal_Unicode *)pSource;
break; break;
case typelib_TypeClass_BOOLEAN: case typelib_TypeClass_BOOLEAN:
pDestAny->pData = &pDestAny->pReserved; pDestAny->pData = &pDestAny->pReserved;
*(sal_Bool *)&pDestAny->pReserved = (*(sal_Bool *)pSource != sal_False); *(sal_Bool *)pDestAny->pData = (*(sal_Bool *)pSource != sal_False);
break; break;
case typelib_TypeClass_BYTE: case typelib_TypeClass_BYTE:
pDestAny->pData = &pDestAny->pReserved; pDestAny->pData = &pDestAny->pReserved;
*(sal_Int8 *)&pDestAny->pReserved = *(sal_Int8 *)pSource; *(sal_Int8 *)pDestAny->pData = *(sal_Int8 *)pSource;
break; break;
case typelib_TypeClass_SHORT: case typelib_TypeClass_SHORT:
case typelib_TypeClass_UNSIGNED_SHORT: case typelib_TypeClass_UNSIGNED_SHORT:
pDestAny->pData = &pDestAny->pReserved; pDestAny->pData = &pDestAny->pReserved;
*(sal_Int16 *)&pDestAny->pReserved = *(sal_Int16 *)pSource; *(sal_Int16 *)pDestAny->pData = *(sal_Int16 *)pSource;
break; break;
case typelib_TypeClass_LONG: case typelib_TypeClass_LONG:
case typelib_TypeClass_UNSIGNED_LONG: case typelib_TypeClass_UNSIGNED_LONG:
pDestAny->pData = &pDestAny->pReserved; pDestAny->pData = &pDestAny->pReserved;
*(sal_Int32 *)&pDestAny->pReserved = *(sal_Int32 *)pSource; *(sal_Int32 *)pDestAny->pData = *(sal_Int32 *)pSource;
break; break;
case typelib_TypeClass_HYPER: case typelib_TypeClass_HYPER:
case typelib_TypeClass_UNSIGNED_HYPER: case typelib_TypeClass_UNSIGNED_HYPER:
if (sizeof(void *) >= sizeof(sal_Int64)) if (sizeof(void *) >= sizeof(sal_Int64))
{
pDestAny->pData = &pDestAny->pReserved; pDestAny->pData = &pDestAny->pReserved;
*(sal_Int64 *)&pDestAny->pReserved = *(sal_Int64 *)pSource;
}
else else
{
pDestAny->pData = ::rtl_allocateMemory( sizeof(sal_Int64) ); pDestAny->pData = ::rtl_allocateMemory( sizeof(sal_Int64) );
*(sal_Int64 *)pDestAny->pData = *(sal_Int64 *)pSource; *(sal_Int64 *)pDestAny->pData = *(sal_Int64 *)pSource;
}
break; break;
case typelib_TypeClass_FLOAT: case typelib_TypeClass_FLOAT:
if (sizeof(void *) >= sizeof(float)) if (sizeof(void *) >= sizeof(float))
{
pDestAny->pData = &pDestAny->pReserved; pDestAny->pData = &pDestAny->pReserved;
*(float *)&pDestAny->pReserved = *(float *)pSource;
}
else else
{
pDestAny->pData = ::rtl_allocateMemory( sizeof(float) ); pDestAny->pData = ::rtl_allocateMemory( sizeof(float) );
*(float *)pDestAny->pData = *(float *)pSource; *(float *)pDestAny->pData = *(float *)pSource;
}
break; break;
case typelib_TypeClass_DOUBLE: case typelib_TypeClass_DOUBLE:
if (sizeof(void *) >= sizeof(double)) if (sizeof(void *) >= sizeof(double))
{
pDestAny->pData = &pDestAny->pReserved; pDestAny->pData = &pDestAny->pReserved;
*(double *)&pDestAny->pReserved = *(double *)pSource;
}
else else
{
pDestAny->pData = ::rtl_allocateMemory( sizeof(double) ); pDestAny->pData = ::rtl_allocateMemory( sizeof(double) );
*(double *)pDestAny->pData = *(double *)pSource; *(double *)pDestAny->pData = *(double *)pSource;
}
break; break;
case typelib_TypeClass_STRING: case typelib_TypeClass_STRING:
::rtl_uString_acquire( *(rtl_uString **)pSource ); ::rtl_uString_acquire( *(rtl_uString **)pSource );
pDestAny->pData = &pDestAny->pReserved; pDestAny->pData = &pDestAny->pReserved;
*(rtl_uString **)&pDestAny->pReserved = *(rtl_uString **)pSource; *(rtl_uString **)pDestAny->pData = *(rtl_uString **)pSource;
break; break;
case typelib_TypeClass_TYPE: case typelib_TypeClass_TYPE:
TYPE_ACQUIRE( *(typelib_TypeDescriptionReference **)pSource ); TYPE_ACQUIRE( *(typelib_TypeDescriptionReference **)pSource );
pDestAny->pData = &pDestAny->pReserved; pDestAny->pData = &pDestAny->pReserved;
*(typelib_TypeDescriptionReference **)&pDestAny->pReserved = *(typelib_TypeDescriptionReference **)pSource; *(typelib_TypeDescriptionReference **)pDestAny->pData = *(typelib_TypeDescriptionReference **)pSource;
break; break;
case typelib_TypeClass_ANY: case typelib_TypeClass_ANY:
OSL_FAIL( "### unexpected nested any!" ); OSL_FAIL( "### unexpected nested any!" );
...@@ -257,7 +242,7 @@ inline void _copyConstructAnyFromData( ...@@ -257,7 +242,7 @@ inline void _copyConstructAnyFromData(
case typelib_TypeClass_ENUM: case typelib_TypeClass_ENUM:
pDestAny->pData = &pDestAny->pReserved; pDestAny->pData = &pDestAny->pReserved;
// enum is forced to 32bit long // enum is forced to 32bit long
*(sal_Int32 *)&pDestAny->pReserved = *(sal_Int32 *)pSource; *(sal_Int32 *)pDestAny->pData = *(sal_Int32 *)pSource;
break; break;
case typelib_TypeClass_STRUCT: case typelib_TypeClass_STRUCT:
case typelib_TypeClass_EXCEPTION: case typelib_TypeClass_EXCEPTION:
...@@ -318,7 +303,7 @@ inline void _copyConstructAnyFromData( ...@@ -318,7 +303,7 @@ inline void _copyConstructAnyFromData(
pDestAny->pData = &pDestAny->pReserved; pDestAny->pData = &pDestAny->pReserved;
if (pTypeDescr) if (pTypeDescr)
{ {
*(uno_Sequence **)&pDestAny->pReserved = copyConstructSequence( *(uno_Sequence **)pDestAny->pData = copyConstructSequence(
*(uno_Sequence **)pSource, *(uno_Sequence **)pSource,
((typelib_IndirectTypeDescription *)pTypeDescr)->pType, ((typelib_IndirectTypeDescription *)pTypeDescr)->pType,
acquire, mapping ); acquire, mapping );
...@@ -326,7 +311,7 @@ inline void _copyConstructAnyFromData( ...@@ -326,7 +311,7 @@ inline void _copyConstructAnyFromData(
else else
{ {
TYPELIB_DANGER_GET( &pTypeDescr, pType ); TYPELIB_DANGER_GET( &pTypeDescr, pType );
*(uno_Sequence **)&pDestAny->pReserved = copyConstructSequence( *(uno_Sequence **)pDestAny->pData = copyConstructSequence(
*(uno_Sequence **)pSource, *(uno_Sequence **)pSource,
((typelib_IndirectTypeDescription *)pTypeDescr)->pType, ((typelib_IndirectTypeDescription *)pTypeDescr)->pType,
acquire, mapping ); acquire, mapping );
...@@ -393,82 +378,67 @@ inline void _copyConstructAny( ...@@ -393,82 +378,67 @@ inline void _copyConstructAny(
{ {
case typelib_TypeClass_CHAR: case typelib_TypeClass_CHAR:
pDestAny->pData = &pDestAny->pReserved; pDestAny->pData = &pDestAny->pReserved;
*(sal_Unicode *)&pDestAny->pReserved = '\0'; *(sal_Unicode *)pDestAny->pData = '\0';
break; break;
case typelib_TypeClass_BOOLEAN: case typelib_TypeClass_BOOLEAN:
pDestAny->pData = &pDestAny->pReserved; pDestAny->pData = &pDestAny->pReserved;
*(sal_Bool *)&pDestAny->pReserved = sal_False; *(sal_Bool *)pDestAny->pData = sal_False;
break; break;
case typelib_TypeClass_BYTE: case typelib_TypeClass_BYTE:
pDestAny->pData = &pDestAny->pReserved; pDestAny->pData = &pDestAny->pReserved;
*(sal_Int8 *)&pDestAny->pReserved = 0; *(sal_Int8 *)pDestAny->pData = 0;
break; break;
case typelib_TypeClass_SHORT: case typelib_TypeClass_SHORT:
case typelib_TypeClass_UNSIGNED_SHORT: case typelib_TypeClass_UNSIGNED_SHORT:
pDestAny->pData = &pDestAny->pReserved; pDestAny->pData = &pDestAny->pReserved;
*(sal_Int16 *)&pDestAny->pReserved = 0; *(sal_Int16 *)pDestAny->pData = 0;
break; break;
case typelib_TypeClass_LONG: case typelib_TypeClass_LONG:
case typelib_TypeClass_UNSIGNED_LONG: case typelib_TypeClass_UNSIGNED_LONG:
pDestAny->pData = &pDestAny->pReserved; pDestAny->pData = &pDestAny->pReserved;
*(sal_Int32 *)&pDestAny->pReserved = 0; *(sal_Int32 *)pDestAny->pData = 0;
break; break;
case typelib_TypeClass_HYPER: case typelib_TypeClass_HYPER:
case typelib_TypeClass_UNSIGNED_HYPER: case typelib_TypeClass_UNSIGNED_HYPER:
if (sizeof(void *) >= sizeof(sal_Int64)) if (sizeof(void *) >= sizeof(sal_Int64))
{
pDestAny->pData = &pDestAny->pReserved; pDestAny->pData = &pDestAny->pReserved;
*(sal_Int64 *)&pDestAny->pReserved = 0;
}
else else
{
pDestAny->pData = ::rtl_allocateMemory( sizeof(sal_Int64) ); pDestAny->pData = ::rtl_allocateMemory( sizeof(sal_Int64) );
*(sal_Int64 *)pDestAny->pData = 0; *(sal_Int64 *)pDestAny->pData = 0;
}
break; break;
case typelib_TypeClass_FLOAT: case typelib_TypeClass_FLOAT:
if (sizeof(void *) >= sizeof(float)) if (sizeof(void *) >= sizeof(float))
{
pDestAny->pData = &pDestAny->pReserved; pDestAny->pData = &pDestAny->pReserved;
*(float *)&pDestAny->pReserved = 0.0;
}
else else
{
pDestAny->pData = ::rtl_allocateMemory( sizeof(float) ); pDestAny->pData = ::rtl_allocateMemory( sizeof(float) );
*(float *)pDestAny->pData = 0.0; *(float *)pDestAny->pData = 0.0;
}
break; break;
case typelib_TypeClass_DOUBLE: case typelib_TypeClass_DOUBLE:
if (sizeof(void *) >= sizeof(double)) if (sizeof(void *) >= sizeof(double))
{
pDestAny->pData = &pDestAny->pReserved; pDestAny->pData = &pDestAny->pReserved;
*(double *)&pDestAny->pReserved = 0.0;
}
else else
{
pDestAny->pData = ::rtl_allocateMemory( sizeof(double) ); pDestAny->pData = ::rtl_allocateMemory( sizeof(double) );
*(double *)pDestAny->pData = 0.0; *(double *)pDestAny->pData = 0.0;
}
break; break;
case typelib_TypeClass_STRING: case typelib_TypeClass_STRING:
pDestAny->pData = &pDestAny->pReserved; pDestAny->pData = &pDestAny->pReserved;
*(rtl_uString **)&pDestAny->pReserved = 0; *(rtl_uString **)pDestAny->pData = 0;
::rtl_uString_new( (rtl_uString **)&pDestAny->pReserved ); ::rtl_uString_new( (rtl_uString **)pDestAny->pData );
break; break;
case typelib_TypeClass_TYPE: case typelib_TypeClass_TYPE:
pDestAny->pData = &pDestAny->pReserved; pDestAny->pData = &pDestAny->pReserved;
*(typelib_TypeDescriptionReference **)&pDestAny->pReserved = _getVoidType(); *(typelib_TypeDescriptionReference **)pDestAny->pData = _getVoidType();
break; break;
case typelib_TypeClass_ENUM: case typelib_TypeClass_ENUM:
pDestAny->pData = &pDestAny->pReserved; pDestAny->pData = &pDestAny->pReserved;
if (pTypeDescr) if (pTypeDescr)
{ {
*(sal_Int32 *)&pDestAny->pReserved = ((typelib_EnumTypeDescription *)pTypeDescr)->nDefaultEnumValue; *(sal_Int32 *)pDestAny->pData = ((typelib_EnumTypeDescription *)pTypeDescr)->nDefaultEnumValue;
} }
else else
{ {
TYPELIB_DANGER_GET( &pTypeDescr, pType ); TYPELIB_DANGER_GET( &pTypeDescr, pType );
*(sal_Int32 *)&pDestAny->pReserved = ((typelib_EnumTypeDescription *)pTypeDescr)->nDefaultEnumValue; *(sal_Int32 *)pDestAny->pData = ((typelib_EnumTypeDescription *)pTypeDescr)->nDefaultEnumValue;
TYPELIB_DANGER_RELEASE( pTypeDescr ); TYPELIB_DANGER_RELEASE( pTypeDescr );
} }
break; break;
...@@ -521,7 +491,7 @@ inline void _copyConstructAny( ...@@ -521,7 +491,7 @@ inline void _copyConstructAny(
break; break;
case typelib_TypeClass_SEQUENCE: case typelib_TypeClass_SEQUENCE:
pDestAny->pData = &pDestAny->pReserved; pDestAny->pData = &pDestAny->pReserved;
*(uno_Sequence **)&pDestAny->pReserved = createEmptySequence(); *(uno_Sequence **)pDestAny->pData = createEmptySequence();
break; break;
case typelib_TypeClass_INTERFACE: case typelib_TypeClass_INTERFACE:
pDestAny->pData = &pDestAny->pReserved; pDestAny->pData = &pDestAny->pReserved;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment