1
0
mirror of https://github.com/irssi/irssi.git synced 2024-12-04 14:46:39 -05:00

replace refstring macro implementation with C functions

This commit is contained in:
Ailin Nemui 2021-02-25 10:50:51 +01:00
parent d535a79730
commit 322df0d2c8
2 changed files with 30 additions and 20 deletions

View File

@ -1,16 +1,42 @@
#include <glib.h>
#include <string.h> #include <string.h>
#include <irssi/src/core/refstrings.h> #include <irssi/src/core/refstrings.h>
#if GLIB_CHECK_VERSION(2, 58, 0) #if GLIB_CHECK_VERSION(2, 58, 0)
/* callback implementation for GHashTable */ void i_refstr_init(void)
#undef i_refstr_release {
/* nothing */
}
char *i_refstr_intern(const char *str)
{
if (str == NULL) {
return NULL;
}
return g_ref_string_new_intern(str);
}
void i_refstr_release(char *str) void i_refstr_release(char *str)
{ {
if (str != NULL) { if (str == NULL) {
return;
}
g_ref_string_release(str); g_ref_string_release(str);
} }
void i_refstr_deinit(void)
{
/* nothing */
}
char *i_refstr_table_size_info(void)
{
/* not available */
return NULL;
} }
#else #else

View File

@ -1,20 +1,6 @@
#ifndef IRSSI_CORE_REFSTRINGS_H #ifndef IRSSI_CORE_REFSTRINGS_H
#define IRSSI_CORE_REFSTRINGS_H #define IRSSI_CORE_REFSTRINGS_H
#include <glib.h>
#if GLIB_CHECK_VERSION(2, 58, 0)
#define i_refstr_init() /* nothing */
/* callback implementation */
void i_refstr_release(char *str);
#define i_refstr_release(str) ((str) == NULL ? NULL : g_ref_string_release(str))
#define i_refstr_intern(str) ((str) == NULL ? NULL : g_ref_string_new_intern(str))
#define i_refstr_deinit() /* nothing */
#define i_refstr_table_size_info() NULL
#else
void i_refstr_init(void); void i_refstr_init(void);
char *i_refstr_intern(const char *str); char *i_refstr_intern(const char *str);
void i_refstr_release(char *str); void i_refstr_release(char *str);
@ -22,5 +8,3 @@ void i_refstr_deinit(void);
char *i_refstr_table_size_info(void); char *i_refstr_table_size_info(void);
#endif #endif
#endif