* iconv/gconv_simple.c (ucs4le_internal_loop): Remove cast used as
lvalue. (internal_ucs4le_loop_single): Likewise. (ucs4_internal_loop): Likewise. (BODY): Likewise. (internal_ucs4_loop_single): Likewise.
This commit is contained in:
parent
acd262e611
commit
cdda3d7dea
@ -1,5 +1,5 @@
|
||||
/* Find matching transformation algorithms and initialize steps.
|
||||
Copyright (C) 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
|
||||
Copyright (C) 1997, 1998, 1999, 2000, 2001, 2004 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
|
||||
|
||||
@ -182,8 +182,13 @@ __gconv_open (const char *toset, const char *fromset, __gconv_t *handle,
|
||||
|| __builtin_expect (__gconv_translit_find (runp), 0) == 0)
|
||||
lastp = runp;
|
||||
else
|
||||
/* This means we haven't found the module. Remove it. */
|
||||
(lastp == NULL ? trans : lastp->next) = runp->next;
|
||||
{
|
||||
/* This means we haven't found the module. Remove it. */
|
||||
if (lastp == NULL)
|
||||
trans = runp->next;
|
||||
else
|
||||
lastp->next = runp->next;
|
||||
}
|
||||
}
|
||||
|
||||
/* Allocate room for handle. */
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* Simple transformations functions.
|
||||
Copyright (C) 1997-2002, 2003 Free Software Foundation, Inc.
|
||||
Copyright (C) 1997-2003, 2004 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
|
||||
|
||||
@ -87,9 +87,11 @@ internal_ucs4_loop (struct __gconv_step *step,
|
||||
#if __BYTE_ORDER == __LITTLE_ENDIAN
|
||||
/* Sigh, we have to do some real work. */
|
||||
size_t cnt;
|
||||
uint32_t *outptr32 = (uint32_t *) outptr;
|
||||
|
||||
for (cnt = 0; cnt < n_convert; ++cnt, inptr += 4)
|
||||
*((uint32_t *) outptr)++ = bswap_32 (*(const uint32_t *) inptr);
|
||||
*outptr32++ = bswap_32 (*(const uint32_t *) inptr);
|
||||
outptr = (unsigned char *) outptr32;
|
||||
|
||||
*inptrp = inptr;
|
||||
*outptrp = outptr;
|
||||
@ -192,13 +194,16 @@ internal_ucs4_loop_single (struct __gconv_step *step,
|
||||
(*outptrp)[2] = state->__value.__wchb[1];
|
||||
(*outptrp)[3] = state->__value.__wchb[0];
|
||||
|
||||
*outptrp += 4;
|
||||
#elif __BYTE_ORDER == __BIG_ENDIAN
|
||||
/* XXX unaligned */
|
||||
*(*((uint32_t **) outptrp)++) = state->__value.__wch;
|
||||
(*outptrp)[0] = state->__value.__wchb[0];
|
||||
(*outptrp)[1] = state->__value.__wchb[1];
|
||||
(*outptrp)[2] = state->__value.__wchb[2];
|
||||
(*outptrp)[3] = state->__value.__wchb[3];
|
||||
#else
|
||||
# error "This endianess is not supported."
|
||||
#endif
|
||||
*outptrp += 4;
|
||||
|
||||
/* Clear the state buffer. */
|
||||
state->__count &= ~7;
|
||||
@ -268,7 +273,8 @@ ucs4_internal_loop (struct __gconv_step *step,
|
||||
return __GCONV_ILLEGAL_INPUT;
|
||||
}
|
||||
|
||||
*((uint32_t *) outptr)++ = inval;
|
||||
*((uint32_t *) outptr) = inval;
|
||||
outptr += sizeof (uint32_t);
|
||||
}
|
||||
|
||||
*inptrp = inptr;
|
||||
@ -558,8 +564,13 @@ internal_ucs4le_loop_single (struct __gconv_step *step,
|
||||
*outptrp += 4;
|
||||
#else
|
||||
/* XXX unaligned */
|
||||
*(*((uint32_t **) outptrp)++) = state->__value.__wch;
|
||||
(*outptrp)[0] = state->__value.__wchb[0];
|
||||
(*outptrp)[1] = state->__value.__wchb[1];
|
||||
(*outptrp)[2] = state->__value.__wchb[2];
|
||||
(*outptrp)[3] = state->__value.__wchb[3];
|
||||
|
||||
#endif
|
||||
*outptrp += 4;
|
||||
|
||||
/* Clear the state buffer. */
|
||||
state->__count &= ~7;
|
||||
@ -626,7 +637,8 @@ ucs4le_internal_loop (struct __gconv_step *step,
|
||||
return __GCONV_ILLEGAL_INPUT;
|
||||
}
|
||||
|
||||
*((uint32_t *) outptr)++ = inval;
|
||||
*((uint32_t *) outptr) = inval;
|
||||
outptr += sizeof (uint32_t);
|
||||
}
|
||||
|
||||
*inptrp = inptr;
|
||||
@ -808,7 +820,8 @@ ucs4le_internal_loop_single (struct __gconv_step *step,
|
||||
} \
|
||||
else \
|
||||
/* It's an one byte sequence. */ \
|
||||
*((uint32_t *) outptr)++ = *inptr++; \
|
||||
*((uint32_t *) outptr) = *inptr++; \
|
||||
outptr += sizeof (uint32_t); \
|
||||
}
|
||||
#define LOOP_NEED_FLAGS
|
||||
#include <iconv/loop.c>
|
||||
@ -838,7 +851,8 @@ ucs4le_internal_loop_single (struct __gconv_step *step,
|
||||
} \
|
||||
else \
|
||||
/* It's an one byte sequence. */ \
|
||||
*outptr++ = *((const uint32_t *) inptr)++; \
|
||||
*outptr++ = *((const uint32_t *) inptr); \
|
||||
inptr += sizeof (uint32_t); \
|
||||
}
|
||||
#define LOOP_NEED_FLAGS
|
||||
#include <iconv/loop.c>
|
||||
@ -1032,7 +1046,8 @@ ucs4le_internal_loop_single (struct __gconv_step *step,
|
||||
} \
|
||||
\
|
||||
/* Now adjust the pointers and store the result. */ \
|
||||
*((uint32_t *) outptr)++ = ch; \
|
||||
*((uint32_t *) outptr) = ch; \
|
||||
outptr += sizeof (uint32_t); \
|
||||
}
|
||||
#define LOOP_NEED_FLAGS
|
||||
|
||||
@ -1153,7 +1168,8 @@ ucs4le_internal_loop_single (struct __gconv_step *step,
|
||||
STANDARD_FROM_LOOP_ERR_HANDLER (2); \
|
||||
} \
|
||||
\
|
||||
*((uint32_t *) outptr)++ = u1; \
|
||||
*((uint32_t *) outptr) = u1; \
|
||||
outptr += sizeof (uint32_t); \
|
||||
inptr += 2; \
|
||||
}
|
||||
#define LOOP_NEED_FLAGS
|
||||
@ -1201,7 +1217,8 @@ ucs4le_internal_loop_single (struct __gconv_step *step,
|
||||
} \
|
||||
else \
|
||||
{ \
|
||||
*((uint16_t *) outptr)++ = val; \
|
||||
*((uint16_t *) outptr) = val; \
|
||||
outptr += sizeof (uint16_t); \
|
||||
inptr += 4; \
|
||||
} \
|
||||
}
|
||||
@ -1242,7 +1259,8 @@ ucs4le_internal_loop_single (struct __gconv_step *step,
|
||||
continue; \
|
||||
} \
|
||||
\
|
||||
*((uint32_t *) outptr)++ = u1; \
|
||||
*((uint32_t *) outptr) = u1; \
|
||||
outptr += sizeof (uint32_t); \
|
||||
inptr += 2; \
|
||||
}
|
||||
#define LOOP_NEED_FLAGS
|
||||
@ -1291,7 +1309,8 @@ ucs4le_internal_loop_single (struct __gconv_step *step,
|
||||
} \
|
||||
else \
|
||||
{ \
|
||||
*((uint16_t *) outptr)++ = bswap_16 (val); \
|
||||
*((uint16_t *) outptr) = bswap_16 (val); \
|
||||
outptr += sizeof (uint16_t); \
|
||||
inptr += 4; \
|
||||
} \
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user