From 231a33cbfa5c81ab8efd8cbc54bb083d3ed2368d Mon Sep 17 00:00:00 2001 From: Simon South Date: Sat, 1 Aug 2015 17:00:50 +0000 Subject: [PATCH 1/3] c_glib: Library: Use AM_CPPFLAGS for include paths, not AM_CFLAGS This follows the description of the two variables in the automake documentation. --- lib/c_glib/Makefile.am | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/c_glib/Makefile.am b/lib/c_glib/Makefile.am index 4e0aa88067b..67ebf20d5ed 100755 --- a/lib/c_glib/Makefile.am +++ b/lib/c_glib/Makefile.am @@ -24,7 +24,7 @@ pkgconfigdir = $(libdir)/pkgconfig lib_LTLIBRARIES = libthrift_c_glib.la pkgconfig_DATA = thrift_c_glib.pc -AM_CFLAGS = -Isrc -I src/thrift/c_glib +AM_CPPFLAGS = -Isrc -I src/thrift/c_glib # Define the source files for the module From d4919d5dd17943ff45996566de8146d279930eaf Mon Sep 17 00:00:00 2001 From: Simon South Date: Sat, 1 Aug 2015 17:05:08 +0000 Subject: [PATCH 2/3] c_glib: Library: Build with all warnings enabled This matches the settings ("-Wall -Wextra -pedantic") used to build the C++ library. --- lib/c_glib/Makefile.am | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/c_glib/Makefile.am b/lib/c_glib/Makefile.am index 67ebf20d5ed..58e7329141e 100755 --- a/lib/c_glib/Makefile.am +++ b/lib/c_glib/Makefile.am @@ -25,6 +25,7 @@ lib_LTLIBRARIES = libthrift_c_glib.la pkgconfig_DATA = thrift_c_glib.pc AM_CPPFLAGS = -Isrc -I src/thrift/c_glib +AM_CFLAGS = -Wall -Wextra -pedantic # Define the source files for the module From 1e3114c68d22972dd2e559c73cf0adaa0e25bd05 Mon Sep 17 00:00:00 2001 From: Simon South Date: Sat, 1 Aug 2015 18:33:20 +0000 Subject: [PATCH 3/3] c_glib: Library: Build without compiler warnings These changes allow the C (GLib) library to be built without warnings from the compiler, even with extra compiler warnings enabled. The changes involve - Moving variable declarations to the top of every code block, - Using unions instead of type-punning to follow strict-aliasing rules, - Replacing variable-length array declarations with arrays allocated on the stack (using g_newa and g_alloca), - Casting void pointers to a suitably sized data type before performing arithmetic on them, - Replacing C++-style ("//") comments with C-style equivalents, and - Removing an errant semicolon and comma. --- .../processor/thrift_dispatch_processor.c | 2 +- .../c_glib/protocol/thrift_binary_protocol.c | 137 +++++++++++------- .../protocol/thrift_binary_protocol_factory.c | 4 +- .../c_glib/server/thrift_simple_server.c | 20 +-- lib/c_glib/src/thrift/c_glib/thrift.c | 4 +- .../transport/thrift_buffered_transport.c | 41 +++--- .../transport/thrift_framed_transport.c | 40 ++--- .../c_glib/transport/thrift_memory_buffer.c | 18 ++- .../c_glib/transport/thrift_server_socket.c | 2 +- .../thrift/c_glib/transport/thrift_socket.c | 13 +- 10 files changed, 164 insertions(+), 117 deletions(-) diff --git a/lib/c_glib/src/thrift/c_glib/processor/thrift_dispatch_processor.c b/lib/c_glib/src/thrift/c_glib/processor/thrift_dispatch_processor.c index 7d223bf49f7..57f0bed1ca1 100644 --- a/lib/c_glib/src/thrift/c_glib/processor/thrift_dispatch_processor.c +++ b/lib/c_glib/src/thrift/c_glib/processor/thrift_dispatch_processor.c @@ -23,7 +23,7 @@ G_DEFINE_ABSTRACT_TYPE (ThriftDispatchProcessor, thrift_dispatch_processor, - THRIFT_TYPE_PROCESSOR); + THRIFT_TYPE_PROCESSOR) gboolean thrift_dispatch_processor_process (ThriftProcessor *processor, diff --git a/lib/c_glib/src/thrift/c_glib/protocol/thrift_binary_protocol.c b/lib/c_glib/src/thrift/c_glib/protocol/thrift_binary_protocol.c index 32a8000d230..358396cd656 100644 --- a/lib/c_glib/src/thrift/c_glib/protocol/thrift_binary_protocol.c +++ b/lib/c_glib/src/thrift/c_glib/protocol/thrift_binary_protocol.c @@ -53,13 +53,13 @@ thrift_binary_protocol_write_message_begin (ThriftProtocol *protocol, const gchar *name, const ThriftMessageType message_type, const gint32 seqid, GError **error) { - g_return_val_if_fail (THRIFT_IS_BINARY_PROTOCOL (protocol), -1); - gint32 version = (THRIFT_BINARY_PROTOCOL_VERSION_1) | ((gint32) message_type); gint32 ret; gint32 xfer = 0; + g_return_val_if_fail (THRIFT_IS_BINARY_PROTOCOL (protocol), -1); + if ((ret = thrift_protocol_write_i32 (protocol, version, error)) < 0) { return -1; @@ -117,12 +117,13 @@ thrift_binary_protocol_write_field_begin (ThriftProtocol *protocol, const gint16 field_id, GError **error) { - THRIFT_UNUSED_VAR (name); - g_return_val_if_fail (THRIFT_IS_BINARY_PROTOCOL (protocol), -1); - gint32 ret; gint32 xfer = 0; + g_return_val_if_fail (THRIFT_IS_BINARY_PROTOCOL (protocol), -1); + + THRIFT_UNUSED_VAR (name); + if ((ret = thrift_protocol_write_byte (protocol, (gint8) field_type, error)) < 0) { @@ -162,11 +163,11 @@ thrift_binary_protocol_write_map_begin (ThriftProtocol *protocol, const guint32 size, GError **error) { - g_return_val_if_fail (THRIFT_IS_BINARY_PROTOCOL (protocol), -1); - gint32 ret; gint32 xfer = 0; + g_return_val_if_fail (THRIFT_IS_BINARY_PROTOCOL (protocol), -1); + if ((ret = thrift_protocol_write_byte (protocol, (gint8) key_type, error)) < 0) { @@ -202,11 +203,11 @@ thrift_binary_protocol_write_list_begin (ThriftProtocol *protocol, const guint32 size, GError **error) { - g_return_val_if_fail (THRIFT_IS_BINARY_PROTOCOL (protocol), -1); - gint32 ret; gint32 xfer = 0; + g_return_val_if_fail (THRIFT_IS_BINARY_PROTOCOL (protocol), -1); + if ((ret = thrift_protocol_write_byte (protocol, (gint8) element_type, error)) < 0) { @@ -256,8 +257,11 @@ gint32 thrift_binary_protocol_write_bool (ThriftProtocol *protocol, const gboolean value, GError **error) { + guint8 tmp; + g_return_val_if_fail (THRIFT_IS_BINARY_PROTOCOL (protocol), -1); - guint8 tmp = value ? 1 : 0; + + tmp = value ? 1 : 0; return thrift_protocol_write_byte (protocol, tmp, error); } @@ -280,9 +284,11 @@ gint32 thrift_binary_protocol_write_i16 (ThriftProtocol *protocol, const gint16 value, GError **error) { + gint16 net; + g_return_val_if_fail (THRIFT_IS_BINARY_PROTOCOL (protocol), -1); - gint16 net = g_htons (value); + net = g_htons (value); if (thrift_transport_write (protocol->transport, (const gpointer) &net, 2, error)) { @@ -296,9 +302,11 @@ gint32 thrift_binary_protocol_write_i32 (ThriftProtocol *protocol, const gint32 value, GError **error) { + gint32 net; + g_return_val_if_fail (THRIFT_IS_BINARY_PROTOCOL (protocol), -1); - gint32 net = g_htonl (value); + net = g_htonl (value); if (thrift_transport_write (protocol->transport, (const gpointer) &net, 4, error)) { @@ -312,9 +320,11 @@ gint32 thrift_binary_protocol_write_i64 (ThriftProtocol *protocol, const gint64 value, GError **error) { + gint64 net; + g_return_val_if_fail (THRIFT_IS_BINARY_PROTOCOL (protocol), -1); - gint64 net = GUINT64_TO_BE (value); + net = GUINT64_TO_BE (value); if (thrift_transport_write (protocol->transport, (const gpointer) &net, 8, error)) { @@ -328,9 +338,11 @@ gint32 thrift_binary_protocol_write_double (ThriftProtocol *protocol, const gdouble value, GError **error) { + guint64 bits; + g_return_val_if_fail (THRIFT_IS_BINARY_PROTOCOL (protocol), -1); - guint64 bits = GUINT64_FROM_BE (thrift_bitwise_cast_guint64 (value)); + bits = GUINT64_FROM_BE (thrift_bitwise_cast_guint64 (value)); if (thrift_transport_write (protocol->transport, (const gpointer) &bits, 8, error)) { @@ -344,9 +356,11 @@ gint32 thrift_binary_protocol_write_string (ThriftProtocol *protocol, const gchar *str, GError **error) { + guint32 len; + g_return_val_if_fail (THRIFT_IS_BINARY_PROTOCOL (protocol), -1); - guint32 len = str != NULL ? strlen (str) : 0; + len = str != NULL ? strlen (str) : 0; /* write the string length + 1 which includes the null terminator */ return thrift_protocol_write_binary (protocol, (const gpointer) str, len, error); @@ -357,10 +371,11 @@ thrift_binary_protocol_write_binary (ThriftProtocol *protocol, const gpointer buf, const guint32 len, GError **error) { - g_return_val_if_fail (THRIFT_IS_BINARY_PROTOCOL (protocol), -1); gint32 ret; gint32 xfer = 0; + g_return_val_if_fail (THRIFT_IS_BINARY_PROTOCOL (protocol), -1); + if ((ret = thrift_protocol_write_i32 (protocol, len, error)) < 0) { return -1; @@ -386,12 +401,12 @@ thrift_binary_protocol_read_message_begin (ThriftProtocol *protocol, ThriftMessageType *message_type, gint32 *seqid, GError **error) { - g_return_val_if_fail (THRIFT_IS_BINARY_PROTOCOL (protocol), -1); - gint32 ret; gint32 xfer = 0; gint32 sz; + g_return_val_if_fail (THRIFT_IS_BINARY_PROTOCOL (protocol), -1); + if ((ret = thrift_protocol_read_i32 (protocol, &sz, error)) < 0) { return -1; @@ -464,13 +479,14 @@ thrift_binary_protocol_read_field_begin (ThriftProtocol *protocol, gint16 *field_id, GError **error) { - THRIFT_UNUSED_VAR (name); - g_return_val_if_fail (THRIFT_IS_BINARY_PROTOCOL (protocol), -1); - gint32 ret; gint32 xfer = 0; gint8 type; + g_return_val_if_fail (THRIFT_IS_BINARY_PROTOCOL (protocol), -1); + + THRIFT_UNUSED_VAR (name); + if ((ret = thrift_protocol_read_byte (protocol, &type, error)) < 0) { return -1; @@ -506,13 +522,13 @@ thrift_binary_protocol_read_map_begin (ThriftProtocol *protocol, guint32 *size, GError **error) { - g_return_val_if_fail (THRIFT_IS_BINARY_PROTOCOL (protocol), -1); - gint32 ret; gint32 xfer = 0; gint8 k, v; gint32 sizei; + g_return_val_if_fail (THRIFT_IS_BINARY_PROTOCOL (protocol), -1); + if ((ret = thrift_protocol_read_byte (protocol, &k, error)) < 0) { return -1; @@ -559,13 +575,13 @@ thrift_binary_protocol_read_list_begin (ThriftProtocol *protocol, ThriftType *element_type, guint32 *size, GError **error) { - g_return_val_if_fail (THRIFT_IS_BINARY_PROTOCOL (protocol), -1); - gint32 ret; gint32 xfer = 0; gint8 e; gint32 sizei; + g_return_val_if_fail (THRIFT_IS_BINARY_PROTOCOL (protocol), -1); + if ((ret = thrift_protocol_read_byte (protocol, &e, error)) < 0) { return -1; @@ -623,10 +639,11 @@ gint32 thrift_binary_protocol_read_bool (ThriftProtocol *protocol, gboolean *value, GError **error) { - g_return_val_if_fail (THRIFT_IS_BINARY_PROTOCOL (protocol), -1); gint32 ret; gpointer b[1]; + g_return_val_if_fail (THRIFT_IS_BINARY_PROTOCOL (protocol), -1); + if ((ret = thrift_transport_read (protocol->transport, b, 1, error)) < 0) @@ -641,10 +658,11 @@ gint32 thrift_binary_protocol_read_byte (ThriftProtocol *protocol, gint8 *value, GError **error) { - g_return_val_if_fail (THRIFT_IS_BINARY_PROTOCOL (protocol), -1); gint32 ret; gpointer b[1]; + g_return_val_if_fail (THRIFT_IS_BINARY_PROTOCOL (protocol), -1); + if ((ret = thrift_transport_read (protocol->transport, b, 1, error)) < 0) @@ -659,18 +677,22 @@ gint32 thrift_binary_protocol_read_i16 (ThriftProtocol *protocol, gint16 *value, GError **error) { - g_return_val_if_fail (THRIFT_IS_BINARY_PROTOCOL (protocol), -1); gint32 ret; - gpointer b[2]; + union + { + gint8 byte_array[2]; + gint16 int16; + } b; + + g_return_val_if_fail (THRIFT_IS_BINARY_PROTOCOL (protocol), -1); if ((ret = thrift_transport_read (protocol->transport, - b, 2, error)) < 0) + b.byte_array, 2, error)) < 0) { return -1; } - *value = *(gint16 *) b; - *value = g_ntohs (*value); + *value = g_ntohs (b.int16); return ret; } @@ -678,18 +700,22 @@ gint32 thrift_binary_protocol_read_i32 (ThriftProtocol *protocol, gint32 *value, GError **error) { - g_return_val_if_fail (THRIFT_IS_BINARY_PROTOCOL (protocol), -1); gint32 ret; - gpointer b[4]; + union + { + gint8 byte_array[4]; + gint32 int32; + } b; + + g_return_val_if_fail (THRIFT_IS_BINARY_PROTOCOL (protocol), -1); if ((ret = thrift_transport_read (protocol->transport, - b, 4, error)) < 0) + b.byte_array, 4, error)) < 0) { return -1; } - *value = *(gint32 *) b; - *value = g_ntohl (*value); + *value = g_ntohl (b.int32); return ret; } @@ -697,18 +723,22 @@ gint32 thrift_binary_protocol_read_i64 (ThriftProtocol *protocol, gint64 *value, GError **error) { - g_return_val_if_fail (THRIFT_IS_BINARY_PROTOCOL (protocol), -1); gint32 ret; - gpointer b[8]; + union + { + gint8 byte_array[8]; + gint64 int64; + } b; + + g_return_val_if_fail (THRIFT_IS_BINARY_PROTOCOL (protocol), -1); if ((ret = thrift_transport_read (protocol->transport, - b, 8, error)) < 0) + b.byte_array, 8, error)) < 0) { return -1; } - *value = *(gint64 *) b; - *value = GUINT64_FROM_BE (*value); + *value = GUINT64_FROM_BE (b.int64); return ret; } @@ -716,19 +746,22 @@ gint32 thrift_binary_protocol_read_double (ThriftProtocol *protocol, gdouble *value, GError **error) { - g_return_val_if_fail (THRIFT_IS_BINARY_PROTOCOL (protocol), -1); gint32 ret; - gpointer b[8]; + union + { + gint8 byte_array[8]; + guint64 uint64; + } b; + + g_return_val_if_fail (THRIFT_IS_BINARY_PROTOCOL (protocol), -1); if ((ret = thrift_transport_read (protocol->transport, - b, 8, error)) < 0) + b.byte_array, 8, error)) < 0) { return -1; } - guint64 bits = *(guint64 *) b; - bits = GUINT64_FROM_BE (bits); - *value = thrift_bitwise_cast_gdouble (bits); + *value = thrift_bitwise_cast_gdouble (GUINT64_FROM_BE (b.uint64)); return ret; } @@ -736,12 +769,13 @@ gint32 thrift_binary_protocol_read_string (ThriftProtocol *protocol, gchar **str, GError **error) { - g_return_val_if_fail (THRIFT_IS_BINARY_PROTOCOL (protocol), -1); guint32 len; gint32 ret; gint32 xfer = 0; gint32 read_len = 0; + g_return_val_if_fail (THRIFT_IS_BINARY_PROTOCOL (protocol), -1); + /* read the length into read_len */ if ((ret = thrift_protocol_read_i32 (protocol, &read_len, error)) < 0) @@ -753,7 +787,7 @@ thrift_binary_protocol_read_string (ThriftProtocol *protocol, if (read_len > 0) { /* allocate the memory for the string */ - len = (guint32) read_len + 1; // space for null terminator + len = (guint32) read_len + 1; /* space for null terminator */ *str = g_new0 (gchar, len); if ((ret = thrift_transport_read (protocol->transport, @@ -777,11 +811,12 @@ thrift_binary_protocol_read_binary (ThriftProtocol *protocol, gpointer *buf, guint32 *len, GError **error) { - g_return_val_if_fail (THRIFT_IS_BINARY_PROTOCOL (protocol), -1); gint32 ret; gint32 xfer = 0; gint32 read_len = 0; + g_return_val_if_fail (THRIFT_IS_BINARY_PROTOCOL (protocol), -1); + /* read the length into read_len */ if ((ret = thrift_protocol_read_i32 (protocol, &read_len, error)) < 0) diff --git a/lib/c_glib/src/thrift/c_glib/protocol/thrift_binary_protocol_factory.c b/lib/c_glib/src/thrift/c_glib/protocol/thrift_binary_protocol_factory.c index 390c8098a40..774e9ad4a44 100644 --- a/lib/c_glib/src/thrift/c_glib/protocol/thrift_binary_protocol_factory.c +++ b/lib/c_glib/src/thrift/c_glib/protocol/thrift_binary_protocol_factory.c @@ -27,11 +27,11 @@ ThriftProtocol * thrift_binary_protocol_factory_get_protocol (ThriftProtocolFactory *factory, ThriftTransport *transport) { - THRIFT_UNUSED_VAR (factory); - ThriftBinaryProtocol *tb = g_object_new (THRIFT_TYPE_BINARY_PROTOCOL, "transport", transport, NULL); + THRIFT_UNUSED_VAR (factory); + return THRIFT_PROTOCOL (tb); } diff --git a/lib/c_glib/src/thrift/c_glib/server/thrift_simple_server.c b/lib/c_glib/src/thrift/c_glib/server/thrift_simple_server.c index cb20ab6f449..22a96c7a481 100644 --- a/lib/c_glib/src/thrift/c_glib/server/thrift_simple_server.c +++ b/lib/c_glib/src/thrift/c_glib/server/thrift_simple_server.c @@ -27,14 +27,14 @@ G_DEFINE_TYPE(ThriftSimpleServer, thrift_simple_server, THRIFT_TYPE_SERVER) gboolean thrift_simple_server_serve (ThriftServer *server, GError **error) { - g_return_val_if_fail (THRIFT_IS_SIMPLE_SERVER (server), FALSE); - ThriftTransport *t = NULL; ThriftTransport *input_transport = NULL, *output_transport = NULL; ThriftProtocol *input_protocol = NULL, *output_protocol = NULL; ThriftSimpleServer *tss = THRIFT_SIMPLE_SERVER(server); GError *process_error = NULL; + g_return_val_if_fail (THRIFT_IS_SIMPLE_SERVER (server), FALSE); + if (thrift_server_transport_listen (server->server_transport, error)) { tss->running = TRUE; while (tss->running == TRUE) @@ -69,11 +69,11 @@ thrift_simple_server_serve (ThriftServer *server, GError **error) g_message ("thrift_simple_server_serve: %s", process_error->message); g_clear_error (&process_error); - // Note we do not propagate processing errors to the caller as they - // normally are transient and not fatal to the server + /* Note we do not propagate processing errors to the caller as they + * normally are transient and not fatal to the server */ } - // TODO: handle exceptions + /* TODO: handle exceptions */ THRIFT_TRANSPORT_GET_CLASS (input_transport)->close (input_transport, NULL); THRIFT_TRANSPORT_GET_CLASS (output_transport)->close (output_transport, @@ -81,13 +81,13 @@ thrift_simple_server_serve (ThriftServer *server, GError **error) } } - // attempt to shutdown + /* attempt to shutdown */ THRIFT_SERVER_TRANSPORT_GET_CLASS (server->server_transport) ->close (server->server_transport, NULL); } - // Since this method is designed to run forever, it can only ever return on - // error + /* Since this method is designed to run forever, it can only ever return on + * error */ return FALSE; } @@ -101,10 +101,10 @@ thrift_simple_server_stop (ThriftServer *server) static void thrift_simple_server_init (ThriftSimpleServer *tss) { - tss->running = FALSE; - ThriftServer *server = THRIFT_SERVER(tss); + tss->running = FALSE; + if (server->input_transport_factory == NULL) { server->input_transport_factory = diff --git a/lib/c_glib/src/thrift/c_glib/thrift.c b/lib/c_glib/src/thrift/c_glib/thrift.c index 079cb5107f8..15f409fc85c 100644 --- a/lib/c_glib/src/thrift/c_glib/thrift.c +++ b/lib/c_glib/src/thrift/c_glib/thrift.c @@ -25,8 +25,10 @@ void thrift_hash_table_get_keys (gpointer key, gpointer value, gpointer user_data) { - THRIFT_UNUSED_VAR (value); GList **list = (GList **) user_data; + + THRIFT_UNUSED_VAR (value); + *list = g_list_append (*list, key); } diff --git a/lib/c_glib/src/thrift/c_glib/transport/thrift_buffered_transport.c b/lib/c_glib/src/thrift/c_glib/transport/thrift_buffered_transport.c index ee8e1aabf7b..ede28cffb27 100644 --- a/lib/c_glib/src/thrift/c_glib/transport/thrift_buffered_transport.c +++ b/lib/c_glib/src/thrift/c_glib/transport/thrift_buffered_transport.c @@ -80,13 +80,13 @@ thrift_buffered_transport_read_slow (ThriftTransport *transport, gpointer buf, gint ret = 0; guint32 want = len; guint32 got = 0; - guchar tmpdata[len]; + guchar *tmpdata = g_alloca (len); guint32 have = t->r_buf->len; - // we shouldn't hit this unless the buffer doesn't have enough to read + /* we shouldn't hit this unless the buffer doesn't have enough to read */ assert (t->r_buf->len < want); - // first copy what we have in our buffer. + /* first copy what we have in our buffer. */ if (have > 0) { memcpy (buf, t->r_buf, t->r_buf->len); @@ -94,9 +94,9 @@ thrift_buffered_transport_read_slow (ThriftTransport *transport, gpointer buf, t->r_buf = g_byte_array_remove_range (t->r_buf, 0, t->r_buf->len); } - // if the buffer is still smaller than what we want to read, then just - // read it directly. otherwise, fill the buffer and then give out - // enough to satisfy the read. + /* if the buffer is still smaller than what we want to read, then just + * read it directly. otherwise, fill the buffer and then give out + * enough to satisfy the read. */ if (t->r_buf_size < want) { if ((ret = THRIFT_TRANSPORT_GET_CLASS (t->transport)->read (t->transport, @@ -107,10 +107,12 @@ thrift_buffered_transport_read_slow (ThriftTransport *transport, gpointer buf, } got += ret; - // copy the data starting from where we left off - memcpy (buf + have, tmpdata, got); + /* copy the data starting from where we left off */ + memcpy ((guint8 *)buf + have, tmpdata, got); return got + have; } else { + guint32 give; + if ((ret = THRIFT_TRANSPORT_GET_CLASS (t->transport)->read (t->transport, tmpdata, want, @@ -120,11 +122,11 @@ thrift_buffered_transport_read_slow (ThriftTransport *transport, gpointer buf, got += ret; t->r_buf = g_byte_array_append (t->r_buf, tmpdata, got); - // hand over what we have up to what the caller wants - guint32 give = want < t->r_buf->len ? want : t->r_buf->len; + /* hand over what we have up to what the caller wants */ + give = want < t->r_buf->len ? want : t->r_buf->len; - memcpy (buf + len - want, t->r_buf->data, give); + memcpy ((guint8 *)buf + len - want, t->r_buf->data, give); t->r_buf = g_byte_array_remove_range (t->r_buf, 0, give); want -= give; @@ -170,8 +172,8 @@ thrift_buffered_transport_write_slow (ThriftTransport *transport, gpointer buf, guint32 have_bytes = t->w_buf->len; guint32 space = t->w_buf_size - t->w_buf->len; - // we need two syscalls because the buffered data plus the buffer itself - // is too big. + /* we need two syscalls because the buffered data plus the buffer itself + * is too big. */ if ((have_bytes + len >= 2*t->w_buf_size) || (have_bytes == 0)) { if (have_bytes > 0) @@ -200,7 +202,7 @@ thrift_buffered_transport_write_slow (ThriftTransport *transport, gpointer buf, } t->w_buf = g_byte_array_remove_range (t->w_buf, 0, t->w_buf->len); - t->w_buf = g_byte_array_append (t->w_buf, buf+space, len-space); + t->w_buf = g_byte_array_append (t->w_buf, (guint8 *)buf + space, len-space); return TRUE; } @@ -242,7 +244,7 @@ thrift_buffered_transport_flush (ThriftTransport *transport, GError **error) if (t->w_buf != NULL && t->w_buf->len > 0) { - // write the buffer and then empty it + /* write the buffer and then empty it */ if (!THRIFT_TRANSPORT_GET_CLASS (t->transport)->write (t->transport, t->w_buf->data, t->w_buf->len, @@ -290,9 +292,10 @@ void thrift_buffered_transport_get_property (GObject *object, guint property_id, GValue *value, GParamSpec *pspec) { - THRIFT_UNUSED_VAR (pspec); ThriftBufferedTransport *transport = THRIFT_BUFFERED_TRANSPORT (object); + THRIFT_UNUSED_VAR (pspec); + switch (property_id) { case PROP_THRIFT_BUFFERED_TRANSPORT_TRANSPORT: @@ -312,9 +315,10 @@ void thrift_buffered_transport_set_property (GObject *object, guint property_id, const GValue *value, GParamSpec *pspec) { - THRIFT_UNUSED_VAR (pspec); ThriftBufferedTransport *transport = THRIFT_BUFFERED_TRANSPORT (object); + THRIFT_UNUSED_VAR (pspec); + switch (property_id) { case PROP_THRIFT_BUFFERED_TRANSPORT_TRANSPORT: @@ -333,6 +337,7 @@ thrift_buffered_transport_set_property (GObject *object, guint property_id, static void thrift_buffered_transport_class_init (ThriftBufferedTransportClass *cls) { + ThriftTransportClass *ttc = THRIFT_TRANSPORT_CLASS (cls); GObjectClass *gobject_class = G_OBJECT_CLASS (cls); GParamSpec *param_spec = NULL; @@ -373,8 +378,6 @@ thrift_buffered_transport_class_init (ThriftBufferedTransportClass *cls) param_spec); - ThriftTransportClass *ttc = THRIFT_TRANSPORT_CLASS (cls); - gobject_class->finalize = thrift_buffered_transport_finalize; ttc->is_open = thrift_buffered_transport_is_open; ttc->peek = thrift_buffered_transport_peek; diff --git a/lib/c_glib/src/thrift/c_glib/transport/thrift_framed_transport.c b/lib/c_glib/src/thrift/c_glib/transport/thrift_framed_transport.c index 47a7960d834..4c8b71fb6f6 100644 --- a/lib/c_glib/src/thrift/c_glib/transport/thrift_framed_transport.c +++ b/lib/c_glib/src/thrift/c_glib/transport/thrift_framed_transport.c @@ -89,10 +89,12 @@ thrift_framed_transport_read_frame (ThriftTransport *transport, sizeof (sz), error) == sizeof (sz)) { + guchar *tmpdata; + sz = ntohl (sz); /* create a buffer to hold the data and read that much data */ - guchar tmpdata[sz]; + tmpdata = g_alloca (sz); bytes = thrift_transport_read (t->transport, tmpdata, sz, error); if (bytes > 0 && (error == NULL || *error == NULL)) @@ -117,10 +119,10 @@ thrift_framed_transport_read_slow (ThriftTransport *transport, gpointer buf, guint32 have = t->r_buf->len; gint32 result = -1; - // we shouldn't hit this unless the buffer doesn't have enough to read + /* we shouldn't hit this unless the buffer doesn't have enough to read */ assert (t->r_buf->len < want); - // first copy what we have in our buffer, if there is anything left + /* first copy what we have in our buffer, if there is anything left */ if (have > 0) { memcpy (buf, t->r_buf, t->r_buf->len); @@ -128,14 +130,14 @@ thrift_framed_transport_read_slow (ThriftTransport *transport, gpointer buf, t->r_buf = g_byte_array_remove_range (t->r_buf, 0, t->r_buf->len); } - // read a frame of input and buffer it + /* read a frame of input and buffer it */ if (thrift_framed_transport_read_frame (transport, error) == TRUE) { - // hand over what we have up to what the caller wants + /* hand over what we have up to what the caller wants */ guint32 give = want < t->r_buf->len ? want : t->r_buf->len; - // copy the data into the buffer - memcpy (buf + len - want, t->r_buf->data, give); + /* copy the data into the buffer */ + memcpy ((guint8 *)buf + len - want, t->r_buf->data, give); t->r_buf = g_byte_array_remove_range (t->r_buf, 0, give); want -= give; @@ -179,10 +181,11 @@ gboolean thrift_framed_transport_write_slow (ThriftTransport *transport, gpointer buf, guint32 len, GError **error) { - THRIFT_UNUSED_VAR (error); ThriftFramedTransport *t = THRIFT_FRAMED_TRANSPORT (transport); - // append the data to the buffer and we're done + THRIFT_UNUSED_VAR (error); + + /* append the data to the buffer and we're done */ g_byte_array_append (t->w_buf, buf, len); return TRUE; @@ -223,13 +226,14 @@ thrift_framed_transport_flush (ThriftTransport *transport, GError **error) { ThriftFramedTransport *t = THRIFT_FRAMED_TRANSPORT (transport); gint32 sz_hbo, sz_nbo; + guchar *tmpdata; - // get the size of the frame in host and network byte order + /* get the size of the frame in host and network byte order */ sz_hbo = t->w_buf->len + sizeof(sz_nbo); sz_nbo = (gint32) htonl ((guint32) t->w_buf->len); - // copy the size of the frame and then the frame itself - guchar tmpdata[sz_hbo]; + /* copy the size of the frame and then the frame itself */ + tmpdata = g_alloca (sz_hbo); memcpy (tmpdata, (guint8 *) &sz_nbo, sizeof (sz_nbo)); if (t->w_buf->len > 0) @@ -238,7 +242,7 @@ thrift_framed_transport_flush (ThriftTransport *transport, GError **error) t->w_buf = g_byte_array_remove_range (t->w_buf, 0, t->w_buf->len); } - // write the buffer and then empty it + /* write the buffer and then empty it */ THRIFT_TRANSPORT_GET_CLASS (t->transport)->write (t->transport, tmpdata, sz_hbo, error); @@ -282,9 +286,10 @@ void thrift_framed_transport_get_property (GObject *object, guint property_id, GValue *value, GParamSpec *pspec) { - THRIFT_UNUSED_VAR (pspec); ThriftFramedTransport *transport = THRIFT_FRAMED_TRANSPORT (object); + THRIFT_UNUSED_VAR (pspec); + switch (property_id) { case PROP_THRIFT_FRAMED_TRANSPORT_TRANSPORT: @@ -304,9 +309,10 @@ void thrift_framed_transport_set_property (GObject *object, guint property_id, const GValue *value, GParamSpec *pspec) { - THRIFT_UNUSED_VAR (pspec); ThriftFramedTransport *transport = THRIFT_FRAMED_TRANSPORT (object); + THRIFT_UNUSED_VAR (pspec); + switch (property_id) { case PROP_THRIFT_FRAMED_TRANSPORT_TRANSPORT: @@ -325,6 +331,7 @@ thrift_framed_transport_set_property (GObject *object, guint property_id, static void thrift_framed_transport_class_init (ThriftFramedTransportClass *cls) { + ThriftTransportClass *ttc = THRIFT_TRANSPORT_CLASS (cls); GObjectClass *gobject_class = G_OBJECT_CLASS (cls); GParamSpec *param_spec = NULL; @@ -364,9 +371,6 @@ thrift_framed_transport_class_init (ThriftFramedTransportClass *cls) PROP_THRIFT_FRAMED_TRANSPORT_WRITE_BUFFER_SIZE, param_spec); - - ThriftTransportClass *ttc = THRIFT_TRANSPORT_CLASS (cls); - gobject_class->finalize = thrift_framed_transport_finalize; ttc->is_open = thrift_framed_transport_is_open; ttc->peek = thrift_framed_transport_peek; diff --git a/lib/c_glib/src/thrift/c_glib/transport/thrift_memory_buffer.c b/lib/c_glib/src/thrift/c_glib/transport/thrift_memory_buffer.c index aa05e960fb4..8d66c3df90c 100644 --- a/lib/c_glib/src/thrift/c_glib/transport/thrift_memory_buffer.c +++ b/lib/c_glib/src/thrift/c_glib/transport/thrift_memory_buffer.c @@ -32,7 +32,7 @@ enum _ThriftMemoryBufferProperties { PROP_0, - PROP_THRIFT_MEMORY_BUFFER_BUFFER_SIZE, + PROP_THRIFT_MEMORY_BUFFER_BUFFER_SIZE }; G_DEFINE_TYPE(ThriftMemoryBuffer, thrift_memory_buffer, THRIFT_TYPE_TRANSPORT) @@ -68,10 +68,11 @@ gint32 thrift_memory_buffer_read (ThriftTransport *transport, gpointer buf, guint32 len, GError **error) { - THRIFT_UNUSED_VAR (error); ThriftMemoryBuffer *t = THRIFT_MEMORY_BUFFER (transport); guint32 give = len; + THRIFT_UNUSED_VAR (error); + /* if the requested bytes are more than what we have available, * just give all that we have the buffer */ if (t->buf->len < len) @@ -102,10 +103,10 @@ thrift_memory_buffer_write (ThriftTransport *transport, const gpointer buf, const guint32 len, GError **error) { - THRIFT_UNUSED_VAR (error); - ThriftMemoryBuffer *t = THRIFT_MEMORY_BUFFER (transport); + THRIFT_UNUSED_VAR (error); + /* return an exception if the buffer doesn't have enough space. */ if (len > t->buf_size - t->buf->len) { @@ -165,9 +166,10 @@ void thrift_memory_buffer_get_property (GObject *object, guint property_id, GValue *value, GParamSpec *pspec) { - THRIFT_UNUSED_VAR (pspec); ThriftMemoryBuffer *transport = THRIFT_MEMORY_BUFFER (object); + THRIFT_UNUSED_VAR (pspec); + switch (property_id) { case PROP_THRIFT_MEMORY_BUFFER_BUFFER_SIZE: @@ -181,9 +183,10 @@ void thrift_memory_buffer_set_property (GObject *object, guint property_id, const GValue *value, GParamSpec *pspec) { - THRIFT_UNUSED_VAR (pspec); ThriftMemoryBuffer *transport = THRIFT_MEMORY_BUFFER (object); + THRIFT_UNUSED_VAR (pspec); + switch (property_id) { case PROP_THRIFT_MEMORY_BUFFER_BUFFER_SIZE: @@ -196,6 +199,7 @@ thrift_memory_buffer_set_property (GObject *object, guint property_id, static void thrift_memory_buffer_class_init (ThriftMemoryBufferClass *cls) { + ThriftTransportClass *ttc = THRIFT_TRANSPORT_CLASS (cls); GObjectClass *gobject_class = G_OBJECT_CLASS (cls); GParamSpec *param_spec = NULL; @@ -215,8 +219,6 @@ thrift_memory_buffer_class_init (ThriftMemoryBufferClass *cls) PROP_THRIFT_MEMORY_BUFFER_BUFFER_SIZE, param_spec); - ThriftTransportClass *ttc = THRIFT_TRANSPORT_CLASS (cls); - gobject_class->finalize = thrift_memory_buffer_finalize; ttc->is_open = thrift_memory_buffer_is_open; ttc->open = thrift_memory_buffer_open; diff --git a/lib/c_glib/src/thrift/c_glib/transport/thrift_server_socket.c b/lib/c_glib/src/thrift/c_glib/transport/thrift_server_socket.c index 5d1f452bd19..97a0ec2095d 100644 --- a/lib/c_glib/src/thrift/c_glib/transport/thrift_server_socket.c +++ b/lib/c_glib/src/thrift/c_glib/transport/thrift_server_socket.c @@ -215,6 +215,7 @@ thrift_server_socket_set_property (GObject *object, guint property_id, static void thrift_server_socket_class_init (ThriftServerSocketClass *cls) { + ThriftServerTransportClass *tstc = THRIFT_SERVER_TRANSPORT_CLASS (cls); GObjectClass *gobject_class = G_OBJECT_CLASS (cls); GParamSpec *param_spec = NULL; @@ -248,7 +249,6 @@ thrift_server_socket_class_init (ThriftServerSocketClass *cls) gobject_class->finalize = thrift_server_socket_finalize; - ThriftServerTransportClass *tstc = THRIFT_SERVER_TRANSPORT_CLASS (cls); tstc->listen = thrift_server_socket_listen; tstc->accept = thrift_server_socket_accept; tstc->close = thrift_server_socket_close; diff --git a/lib/c_glib/src/thrift/c_glib/transport/thrift_socket.c b/lib/c_glib/src/thrift/c_glib/transport/thrift_socket.c index 6bc9af3cc3f..1c147ec4e2b 100644 --- a/lib/c_glib/src/thrift/c_glib/transport/thrift_socket.c +++ b/lib/c_glib/src/thrift/c_glib/transport/thrift_socket.c @@ -186,7 +186,7 @@ thrift_socket_read (ThriftTransport *transport, gpointer buf, while (got < len) { - ret = recv (socket->sd, buf+got, len-got, 0); + ret = recv (socket->sd, (guint8 *)buf + got, len-got, 0); if (ret <= 0) { g_set_error (error, THRIFT_TRANSPORT_ERROR, @@ -224,7 +224,7 @@ thrift_socket_write (ThriftTransport *transport, const gpointer buf, while (sent < len) { - ret = send (socket->sd, buf + sent, len - sent, 0); + ret = send (socket->sd, (guint8 *)buf + sent, len - sent, 0); if (ret < 0) { g_set_error (error, THRIFT_TRANSPORT_ERROR, @@ -291,9 +291,10 @@ void thrift_socket_get_property (GObject *object, guint property_id, GValue *value, GParamSpec *pspec) { - THRIFT_UNUSED_VAR (pspec); ThriftSocket *socket = THRIFT_SOCKET (object); + THRIFT_UNUSED_VAR (pspec); + switch (property_id) { case PROP_THRIFT_SOCKET_HOSTNAME: @@ -310,9 +311,10 @@ void thrift_socket_set_property (GObject *object, guint property_id, const GValue *value, GParamSpec *pspec) { - THRIFT_UNUSED_VAR (pspec); ThriftSocket *socket = THRIFT_SOCKET (object); + THRIFT_UNUSED_VAR (pspec); + switch (property_id) { case PROP_THRIFT_SOCKET_HOSTNAME: @@ -328,6 +330,7 @@ thrift_socket_set_property (GObject *object, guint property_id, static void thrift_socket_class_init (ThriftSocketClass *cls) { + ThriftTransportClass *ttc = THRIFT_TRANSPORT_CLASS (cls); GObjectClass *gobject_class = G_OBJECT_CLASS (cls); GParamSpec *param_spec = NULL; @@ -355,8 +358,6 @@ thrift_socket_class_init (ThriftSocketClass *cls) g_object_class_install_property (gobject_class, PROP_THRIFT_SOCKET_PORT, param_spec); - ThriftTransportClass *ttc = THRIFT_TRANSPORT_CLASS (cls); - gobject_class->finalize = thrift_socket_finalize; ttc->is_open = thrift_socket_is_open; ttc->peek = thrift_socket_peek;