1
0
mirror of https://github.com/haiwen/libsearpc.git synced 2025-09-04 22:30:54 +00:00

Fix a bug for glib-2.32.1

doamin passed to g_set_error must not be 0
This commit is contained in:
poet
2012-05-04 15:04:43 +08:00
parent ec20095480
commit e090d850e0
7 changed files with 26 additions and 11 deletions

View File

@@ -261,7 +261,7 @@ funcname (SearpcClient *client, ${args}) \
&ret_len); \
if (!fret) { \
g_free (fcall); \
g_set_error (error, 0, TRANSPORT_ERROR_CODE, TRANSPORT_ERROR); \
g_set_error (error, DFT_DOMAIN, TRANSPORT_ERROR_CODE, TRANSPORT_ERROR); \
return ${default_value}; \
} \
result = searpc_client_fret__${ret_type} (gtype, fret, ret_len, error); \
@@ -289,7 +289,7 @@ funcname (SearpcClient *client, ${args}) \
&ret_len); \
if (!fret) { \
g_free (fcall); \
g_set_error (error, 0, TRANSPORT_ERROR_CODE, TRANSPORT_ERROR); \
g_set_error (error, DFT_DOMAIN, TRANSPORT_ERROR_CODE, TRANSPORT_ERROR); \
return ${default_value}; \
} \
result = searpc_client_fret__${ret_type} (fret, ret_len, error); \

View File

@@ -51,7 +51,8 @@ searpc_client_generic_callback (char *retstr, size_t len,
gint64 ret64;
if (errstr) {
g_set_error (&error, 0, 500, "Transport error: %s", errstr);
g_set_error (&error, DFT_DOMAIN,
500, "Transport error: %s", errstr);
data->callback (NULL, data->cbdata, error);
g_error_free (error);
} else {
@@ -155,7 +156,8 @@ handle_ret_common (char *data, size_t len, JsonParser **parser,
*root = json_parser_get_root (*parser);
*object = json_node_get_object (*root);
if (*object == NULL) {
g_set_error (error, 0, 502, "Invalid data: not a object");
g_set_error (error, DFT_DOMAIN,
502, "Invalid data: not a object");
g_object_unref (*parser);
*parser = NULL;
*root = NULL;
@@ -165,7 +167,8 @@ handle_ret_common (char *data, size_t len, JsonParser **parser,
if (json_object_has_member (*object, "err_code")) {
err_code = json_object_get_int_member (*object, "err_code");
err_msg = json_object_get_string_or_null_member (*object, "err_msg");
g_set_error (error, 0, err_code, "%s", err_msg);
g_set_error (error, DFT_DOMAIN,
err_code, "%s", err_msg);
g_object_unref (*parser);
*parser = NULL;
*object = NULL;
@@ -287,7 +290,7 @@ searpc_client_fret__objlist (GType gtype, char *data, size_t len, GError **error
JsonNode *member = json_array_get_element (array, i);
GObject *obj = json_gobject_deserialize(gtype, member);
if (obj == NULL) {
g_set_error (error, 0, 503,
g_set_error (error, DFT_DOMAIN, 503,
"Invalid data: object list contains null");
clean_objlist(ret);
g_object_unref (parser);

View File

@@ -4,6 +4,10 @@
#include <glib.h>
#include <glib-object.h>
#ifndef DFT_DOMAIN
#define DFT_DOMAIN g_quark_from_string(G_LOG_DOMAIN)
#endif
typedef char *(*TransportCB)(void *arg, const gchar *fcall_str,
size_t fcall_len, size_t *ret_len);

View File

@@ -252,7 +252,7 @@ searpc_server_call_function (const char *svc_name,
service = g_hash_table_lookup (service_table, svc_name);
if (!service) {
g_warning ("[SeaRPC] cannot find service %s.\n", svc_name);
g_set_error (error, 0, 501, "cannot find service %s.", svc_name);
g_set_error (error, DFT_DOMAIN, 501, "cannot find service %s.", svc_name);
return NULL;
}
@@ -271,7 +271,7 @@ searpc_server_call_function (const char *svc_name,
FuncItem *fitem = g_hash_table_lookup(service->func_table, fname);
if (!fitem) {
g_warning ("[SeaRPC] cannot find function %s.\n", fname);
g_set_error (error, 0, 500, "cannot find function %s.", fname);
g_set_error (error, DFT_DOMAIN, 500, "cannot find function %s.", fname);
return NULL;
}

View File

@@ -3,6 +3,9 @@
#include <glib.h>
#ifndef DFT_DOMAIN
#define DFT_DOMAIN g_quark_from_string(G_LOG_DOMAIN)
#endif
struct _JsonArray;
typedef gchar* (*SearpcMarshalFunc) (void *func, struct _JsonArray *param_array,

View File

@@ -3,6 +3,7 @@
#include <json-glib/json-glib.h>
inline static const gchar *
json_object_get_string_or_null_member (JsonObject *object, const gchar *member_name)
{

View File

@@ -4,9 +4,13 @@
#include <glib.h>
#include <glib-object.h>
#define DFT_DOMAIN g_quark_from_string("TEST")
#include "searpc-server.h"
#include "searpc-client.h"
#define MAMAN_TYPE_BAR (maman_bar_get_type ())
#define MAMAN_BAR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MAMAN_TYPE_BAR, MamanBar))
#define MAMAN_IS_BAR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MAMAN_TYPE_BAR))
@@ -153,7 +157,7 @@ gchar *
get_substring (const gchar *orig_str, int sub_len, GError **error)
{
if (sub_len > strlen(orig_str)) {
g_set_error (error, 0, 100,
g_set_error (error, DFT_DOMAIN, 100,
"Substring length larger than the length of origin string");
return NULL;
}
@@ -227,11 +231,11 @@ get_maman_bar_list (const char *name, int num, GError **error)
GObject *obj;
if (num < 0) {
g_set_error (error, 0, 100, "num must be positive.");
g_set_error (error, DFT_DOMAIN, 100, "num must be positive.");
return NULL;
}
if (num > 1000) {
g_set_error (error, 0, 100, "num must no larger than 1000.");
g_set_error (error, DFT_DOMAIN, 100, "num must no larger than 1000.");
return NULL;
}