Skip to content

Commit

Permalink
Revert "Give a name to unnamed union in CborEncoder"
Browse files Browse the repository at this point in the history
This breaks the build in two circumstances:
 a) tools/json2cbor wasn't included in the change
 b) some old code accessed the ptr member before
    cbor_encoder_get_buffer_size and cbor_encoder_get_extra_bytes_needed

This reverts commit 0e1440a. I will
re-apply it in the master branch and fix the missing code.

Signed-off-by: Thiago Macieira <thiago.macieira@intel.com>
  • Loading branch information
thiagomacieira committed Jul 31, 2016
1 parent 0e1440a commit 4628a11
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 16 deletions.
6 changes: 3 additions & 3 deletions src/cbor.h
Original file line number Diff line number Diff line change
Expand Up @@ -162,7 +162,7 @@ struct CborEncoder
union {
uint8_t *ptr;
ptrdiff_t bytes_needed;
} data;
};
const uint8_t *end;
size_t added;
int flags;
Expand Down Expand Up @@ -204,12 +204,12 @@ CBOR_API CborError cbor_encoder_close_container_checked(CborEncoder *encoder, co

CBOR_INLINE_API size_t cbor_encoder_get_buffer_size(const CborEncoder *encoder, const uint8_t *buffer)
{
return (size_t)(encoder->data.ptr - buffer);
return (size_t)(encoder->ptr - buffer);
}

CBOR_INLINE_API size_t cbor_encoder_get_extra_bytes_needed(const CborEncoder *encoder)
{
return encoder->end ? 0 : (size_t)encoder->data.bytes_needed;
return encoder->end ? 0 : (size_t)encoder->bytes_needed;
}

/* Parser API */
Expand Down
22 changes: 11 additions & 11 deletions src/cborencoder.c
Original file line number Diff line number Diff line change
Expand Up @@ -197,7 +197,7 @@
*/
void cbor_encoder_init(CborEncoder *encoder, uint8_t *buffer, size_t size, int flags)
{
encoder->data.ptr = buffer;
encoder->ptr = buffer;
encoder->end = buffer + size;
encoder->added = 0;
encoder->flags = flags;
Expand Down Expand Up @@ -235,34 +235,34 @@ static inline void put64(void *where, uint64_t v)
static inline bool would_overflow(CborEncoder *encoder, size_t len)
{
ptrdiff_t remaining = (ptrdiff_t)encoder->end;
remaining -= remaining ? (ptrdiff_t)encoder->data.ptr : encoder->data.bytes_needed;
remaining -= remaining ? (ptrdiff_t)encoder->ptr : encoder->bytes_needed;
remaining -= (ptrdiff_t)len;
return unlikely(remaining < 0);
}

static inline void advance_ptr(CborEncoder *encoder, size_t n)
{
if (encoder->end)
encoder->data.ptr += n;
encoder->ptr += n;
else
encoder->data.bytes_needed += n;
encoder->bytes_needed += n;
}

static inline CborError append_to_buffer(CborEncoder *encoder, const void *data, size_t len)
{
if (would_overflow(encoder, len)) {
if (encoder->end != NULL) {
len -= encoder->end - encoder->data.ptr;
len -= encoder->end - encoder->ptr;
encoder->end = NULL;
encoder->data.bytes_needed = 0;
encoder->bytes_needed = 0;
}

advance_ptr(encoder, len);
return CborErrorOutOfMemory;
}

memcpy(encoder->data.ptr, data, len);
encoder->data.ptr += len;
memcpy(encoder->ptr, data, len);
encoder->ptr += len;
return CborNoError;
}

Expand Down Expand Up @@ -447,7 +447,7 @@ __attribute__((noinline))
static CborError create_container(CborEncoder *encoder, CborEncoder *container, size_t length, uint8_t shiftedMajorType)
{
CborError err;
container->data.ptr = encoder->data.ptr;
container->ptr = encoder->ptr;
container->end = encoder->end;
++encoder->added;
container->added = 0;
Expand Down Expand Up @@ -527,9 +527,9 @@ CborError cbor_encoder_create_map(CborEncoder *encoder, CborEncoder *mapEncoder,
CborError cbor_encoder_close_container(CborEncoder *encoder, const CborEncoder *containerEncoder)
{
if (encoder->end)
encoder->data.ptr = containerEncoder->data.ptr;
encoder->ptr = containerEncoder->ptr;
else
encoder->data.bytes_needed = containerEncoder->data.bytes_needed;
encoder->bytes_needed = containerEncoder->bytes_needed;
encoder->end = containerEncoder->end;
if (containerEncoder->flags & CborIteratorFlag_UnknownLength)
return append_byte_to_buffer(encoder, BreakByte);
Expand Down
4 changes: 2 additions & 2 deletions src/cborencoder_close_container_checked.c
Original file line number Diff line number Diff line change
Expand Up @@ -55,14 +55,14 @@
*/
CborError cbor_encoder_close_container_checked(CborEncoder *encoder, const CborEncoder *containerEncoder)
{
const uint8_t *ptr = encoder->data.ptr;
const uint8_t *ptr = encoder->ptr;
CborError err = cbor_encoder_close_container(encoder, containerEncoder);
if (containerEncoder->flags & CborIteratorFlag_UnknownLength || encoder->end == NULL)
return err;

/* check what the original length was */
uint64_t actually_added;
err = extract_number(&ptr, encoder->data.ptr, &actually_added);
err = extract_number(&ptr, encoder->ptr, &actually_added);
if (err)
return err;

Expand Down

0 comments on commit 4628a11

Please sign in to comment.