increase limit of GIRealInfo's ref_count

New limit is 0x7FFFFFFF.
This commit is contained in:
Maxim Ermilov 2010-01-25 00:26:29 +03:00
parent 7d5da3d09f
commit c5319f668d

12
ginfo.c
View File

@ -69,6 +69,8 @@ struct _GIUnresolvedInfo
const gchar *namespace;
};
#define INVALID_REFCOUNT 0x7FFFFFFF
static void
g_info_init (GIRealInfo *info,
GIInfoType type,
@ -80,7 +82,7 @@ g_info_init (GIRealInfo *info,
memset (info, 0, sizeof (GIRealInfo));
/* Invalid refcount used to flag stack-allocated infos */
info->ref_count = 0xFFFF;
info->ref_count = INVALID_REFCOUNT;
info->type = type;
info->typelib = typelib;
@ -110,7 +112,7 @@ g_info_new_full (GIInfoType type,
g_info_init (info, type, repository, container, typelib, offset);
info->ref_count = 1;
if (container && ((GIRealInfo *) container)->ref_count != 0xFFFF)
if (container && ((GIRealInfo *) container)->ref_count != INVALID_REFCOUNT)
g_base_info_ref (info->container);
g_object_ref (info->repository);
@ -170,7 +172,7 @@ g_base_info_ref (GIBaseInfo *info)
{
GIRealInfo *rinfo = (GIRealInfo*)info;
g_assert (rinfo->ref_count != 0xFFFF);
g_assert (rinfo->ref_count != INVALID_REFCOUNT);
((GIRealInfo*)info)->ref_count++;
return info;
@ -181,12 +183,12 @@ g_base_info_unref (GIBaseInfo *info)
{
GIRealInfo *rinfo = (GIRealInfo*)info;
g_assert (rinfo->ref_count > 0 && rinfo->ref_count != 0xFFFF);
g_assert (rinfo->ref_count > 0 && rinfo->ref_count != INVALID_REFCOUNT);
rinfo->ref_count--;
if (!rinfo->ref_count)
{
if (rinfo->container && ((GIRealInfo *) rinfo->container)->ref_count != 0xFFFF)
if (rinfo->container && ((GIRealInfo *) rinfo->container)->ref_count != INVALID_REFCOUNT)
g_base_info_unref (rinfo->container);
if (rinfo->repository)