summaryrefslogtreecommitdiff
path: root/epan/tvbuff.c
diff options
context:
space:
mode:
authorJakub Zawadzki <darkjames-ws@darkjames.pl>2013-07-11 04:35:12 +0000
committerJakub Zawadzki <darkjames-ws@darkjames.pl>2013-07-11 04:35:12 +0000
commit19d2d0dc765cd2417d693746226472207190434a (patch)
tree84fa0d49e73ce672c032a26873d7c79e7f2705f8 /epan/tvbuff.c
parentef942ca0800cb9205e7777d0f9385b4266e8bfaa (diff)
downloadwireshark-19d2d0dc765cd2417d693746226472207190434a.tar.gz
tvbuff: try to fix compilation problems for C++-like compilers.
svn path=/trunk/; revision=50496
Diffstat (limited to 'epan/tvbuff.c')
-rw-r--r--epan/tvbuff.c33
1 files changed, 19 insertions, 14 deletions
diff --git a/epan/tvbuff.c b/epan/tvbuff.c
index 206bd4bf2d..e504f0c8aa 100644
--- a/epan/tvbuff.c
+++ b/epan/tvbuff.c
@@ -51,9 +51,9 @@
#include "charsets.h"
#include "proto.h" /* XXX - only used for DISSECTOR_ASSERT, probably a new header file? */
-static const struct tvb_ops tvb_real_ops;
-static const struct tvb_ops tvb_subset_ops;
-static const struct tvb_ops tvb_composite_ops;
+static inline const struct tvb_ops *get_tvb_real_ops(void);
+static inline const struct tvb_ops *get_tvb_subset_ops(void);
+static inline const struct tvb_ops *get_tvb_composite_ops(void);
static const guint8*
ensure_contiguous_no_exception(tvbuff_t *tvb, const gint offset, const gint length,
@@ -163,7 +163,7 @@ tvb_set_free_cb(tvbuff_t *tvb, const tvbuff_free_cb_t func)
struct tvb_real *real_tvb = (struct tvb_real *) tvb;
DISSECTOR_ASSERT(tvb);
- DISSECTOR_ASSERT(tvb->ops == &tvb_real_ops);
+ DISSECTOR_ASSERT(tvb->ops == get_tvb_real_ops());
real_tvb->free_cb = func;
}
@@ -185,7 +185,7 @@ tvb_set_child_real_data_tvbuff(tvbuff_t *parent, tvbuff_t *child)
DISSECTOR_ASSERT(parent && child);
DISSECTOR_ASSERT(parent->initialized);
DISSECTOR_ASSERT(child->initialized);
- DISSECTOR_ASSERT(child->ops == &tvb_real_ops);
+ DISSECTOR_ASSERT(child->ops == get_tvb_real_ops());
add_to_chain(parent, child);
}
@@ -197,7 +197,7 @@ tvb_new_real_data(const guint8* data, const guint length, const gint reported_le
THROW_ON(reported_length < -1, ReportedBoundsError);
- tvb = tvb_new(&tvb_real_ops);
+ tvb = tvb_new(get_tvb_real_ops());
tvb->real_data = data;
tvb->length = length;
@@ -386,7 +386,7 @@ static tvbuff_t *
tvb_new_with_subset(tvbuff_t *backing, const gint reported_length,
const guint subset_tvb_offset, const guint subset_tvb_length)
{
- tvbuff_t *tvb = tvb_new(&tvb_subset_ops);
+ tvbuff_t *tvb = tvb_new(get_tvb_subset_ops());
struct tvb_subset *subset_tvb = (struct tvb_subset *) tvb;
subset_tvb->subset.offset = subset_tvb_offset;
@@ -574,7 +574,7 @@ tvb_new_octet_aligned(tvbuff_t *tvb, guint32 bit_offset, gint32 no_of_bits)
tvbuff_t *
tvb_new_composite(void)
{
- tvbuff_t *tvb = tvb_new(&tvb_composite_ops);
+ tvbuff_t *tvb = tvb_new(get_tvb_composite_ops());
struct tvb_composite *composite_tvb = (struct tvb_composite *) tvb;
tvb_comp_t *composite = &composite_tvb->composite;
@@ -592,7 +592,7 @@ tvb_composite_append(tvbuff_t *tvb, tvbuff_t *member)
tvb_comp_t *composite;
DISSECTOR_ASSERT(tvb && !tvb->initialized);
- DISSECTOR_ASSERT(tvb->ops == &tvb_composite_ops);
+ DISSECTOR_ASSERT(tvb->ops == get_tvb_composite_ops());
/* Don't allow zero-length TVBs: composite_memcpy() can't handle them
* and anyway it makes no sense.
@@ -610,7 +610,7 @@ tvb_composite_prepend(tvbuff_t *tvb, tvbuff_t *member)
tvb_comp_t *composite;
DISSECTOR_ASSERT(tvb && !tvb->initialized);
- DISSECTOR_ASSERT(tvb->ops == &tvb_composite_ops);
+ DISSECTOR_ASSERT(tvb->ops == get_tvb_composite_ops());
/* Don't allow zero-length TVBs: composite_memcpy() can't handle them
* and anyway it makes no sense.
@@ -633,7 +633,7 @@ tvb_composite_finalize(tvbuff_t *tvb)
int i = 0;
DISSECTOR_ASSERT(tvb && !tvb->initialized);
- DISSECTOR_ASSERT(tvb->ops == &tvb_composite_ops);
+ DISSECTOR_ASSERT(tvb->ops == get_tvb_composite_ops());
DISSECTOR_ASSERT(tvb->length == 0);
DISSECTOR_ASSERT(tvb->reported_length == 0);
@@ -898,7 +898,7 @@ composite_get_ptr(tvbuff_t *tvb, guint abs_offset, guint abs_length)
guint member_offset, member_length;
GSList *slist;
- DISSECTOR_ASSERT(tvb->ops == &tvb_composite_ops);
+ DISSECTOR_ASSERT(tvb->ops == get_tvb_composite_ops());
/* Maybe the range specified by offset/length
* is contiguous inside one of the member tvbuffs */
@@ -1052,7 +1052,7 @@ composite_memcpy(tvbuff_t *tvb, void* _target, guint abs_offset, guint abs_lengt
gboolean retval;
GSList *slist;
- DISSECTOR_ASSERT(tvb->ops == &tvb_composite_ops);
+ DISSECTOR_ASSERT(tvb->ops == get_tvb_composite_ops());
/* Maybe the range specified by offset/length
* is contiguous inside one of the member tvbuffs */
@@ -1135,7 +1135,7 @@ tvb_memcpy(tvbuff_t *tvb, void *target, const gint offset, size_t length)
return memcpy(target, tvb->real_data + abs_offset, abs_length);
}
- if (tvb->ops == &tvb_composite_ops) {
+ if (tvb->ops == get_tvb_composite_ops()) {
/* special case for composite, bug?! */
return tvb->ops->tvb_memcpy(tvb, target, offset, length);
}
@@ -3673,6 +3673,8 @@ static const struct tvb_ops tvb_real_ops = {
NULL, /* pbrk_guint8 */
};
+static inline const struct tvb_ops *get_tvb_real_ops(void) { return &tvb_real_ops; }
+
static const struct tvb_ops tvb_subset_ops = {
subset_sizeof, /* size */
NULL, /* free */
@@ -3683,6 +3685,8 @@ static const struct tvb_ops tvb_subset_ops = {
subset_pbrk_guint8, /* pbrk_guint8 */
};
+static inline const struct tvb_ops *get_tvb_subset_ops(void) { return &tvb_subset_ops; }
+
static const struct tvb_ops tvb_composite_ops = {
composite_sizeof, /* size */
composite_free, /* free */
@@ -3693,3 +3697,4 @@ static const struct tvb_ops tvb_composite_ops = {
NULL, /* pbrk_guint8 XXX */
};
+static inline const struct tvb_ops *get_tvb_composite_ops(void) { return &tvb_composite_ops; }