[prev in list] [next in list] [prev in thread] [next in thread]
List: prelude-cvslog
Subject: [prelude-cvslog] r9863 - libprelude/trunk/src
From: noreply () prelude-ids ! org
Date: 2007-08-28 15:09:48
Message-ID: 20070828150948.290AFE168CB () mail ! prelude-ids ! org
[Download RAW message or body]
Author: yoann
Date: 2007-08-28 17:09:45 +0200 (Tue, 28 Aug 2007)
New Revision: 9863
Modified:
libprelude/trunk/src/prelude-string.c
Log:
Use prelude_return_if_fail() in place of prelude_log().
Emit a critical warning when trying to copy or clone an empty prelude-string.
Modified: libprelude/trunk/src/prelude-string.c
===================================================================
--- libprelude/trunk/src/prelude-string.c 2007-08-28 11:05:52 UTC (rev 9862)
+++ libprelude/trunk/src/prelude-string.c 2007-08-28 15:09:45 UTC (rev 9863)
@@ -67,10 +67,7 @@
-#define check_string(str, len) check_string_f(__FUNCTION__, __LINE__, (str), (len))
-
-
#if ! defined (PRELUDE_VA_COPY)
# if defined (__GNUC__) && defined (__PPC__) && (defined (_CALL_SYSV) || defined \
(_WIN32)) @@ -86,23 +83,17 @@
#endif
+#define STRING_RETURN_IF_INVALID(str, len) do { \
\ + prelude_return_val_if_fail((len + 1) > len, \
\ + \
prelude_error_verbose(PRELUDE_ERROR_INVAL_LENGTH, \ + \
"string length warning: wrap around would occur")); \ + \
\ + prelude_return_val_if_fail(str[len] == 0, \
\ + \
prelude_error_verbose(PRELUDE_ERROR_STRING_NOT_NULL_TERMINATED, \ + \
"string warning: not nul terminated")); \ +} while(0)
-inline static int check_string_f(const char *f, int l, const char *str, size_t len)
-{
- if ( (len + 1) < len ) {
- prelude_log(PRELUDE_LOG_WARN, "%s:%d: warning, wrap around \
detected.\n", f, l);
- return prelude_error_verbose(PRELUDE_ERROR_INVAL_LENGTH, "string \
warning: wrap around would occur");
- }
- if ( str[len] != 0 ) {
- prelude_log(PRELUDE_LOG_WARN, "%s:%d: warning, string is not NULL \
terminated.\n", f, l);
- return \
prelude_error_verbose(PRELUDE_ERROR_STRING_NOT_NULL_TERMINATED, "string warning: not \
nul terminated");
- }
-
- return 0;
-}
-
-
static int string_buf_alloc(prelude_string_t *string, size_t len)
{
/*
@@ -228,11 +219,8 @@
int ret;
prelude_return_val_if_fail(str, -1);
+ STRING_RETURN_IF_INVALID(str, len);
- ret = check_string(str, len);
- if ( ret < 0 )
- return ret;
-
ret = prelude_string_new(string);
if ( ret < 0 )
return ret;
@@ -286,9 +274,7 @@
prelude_return_val_if_fail(str, -1);
- ret = check_string(str, len);
- if ( ret < 0 )
- return ret;
+ STRING_RETURN_IF_INVALID(str, len);
ret = prelude_string_new(string);
if ( ret < 0 )
@@ -339,11 +325,8 @@
int ret;
prelude_return_val_if_fail(buf, -1);
+ STRING_RETURN_IF_INVALID(buf, len);
- ret = check_string(buf, len);
- if ( ret < 0 )
- return ret;
-
ret = prelude_string_new(string);
if ( ret < 0 )
return ret;
@@ -391,11 +374,8 @@
int ret;
prelude_return_val_if_fail(string && buf, -1);
+ STRING_RETURN_IF_INVALID(buf, len);
- ret = check_string(buf, len);
- if ( ret < 0 )
- return ret;
-
prelude_string_destroy_internal(string);
ret = string_buf_alloc(string, len);
@@ -441,14 +421,9 @@
*/
int prelude_string_set_nodup_fast(prelude_string_t *string, char *buf, size_t len)
{
- int ret;
-
prelude_return_val_if_fail(string && buf, -1);
+ STRING_RETURN_IF_INVALID(buf, len);
- ret = check_string(buf, len);
- if ( ret < 0 )
- return ret;
-
prelude_string_destroy_internal(string);
string->index = len;
@@ -494,14 +469,9 @@
*/
int prelude_string_set_ref_fast(prelude_string_t *string, const char *buf, size_t \
len) {
- int ret;
-
prelude_return_val_if_fail(string && buf, -1);
+ STRING_RETURN_IF_INVALID(buf, len);
- ret = check_string(buf, len);
- if ( ret < 0 )
- return ret;
-
prelude_string_destroy_internal(string);
string->index = len;
@@ -572,7 +542,7 @@
*/
int prelude_string_copy_dup(const prelude_string_t *src, prelude_string_t *dst)
{
- prelude_return_val_if_fail(src && dst, -1);
+ prelude_return_val_if_fail(src && src->size && dst, -1);
prelude_string_destroy_internal(dst);
@@ -605,7 +575,7 @@
{
int ret;
- prelude_return_val_if_fail(src, -1);
+ prelude_return_val_if_fail(src && src->size, -1);
ret = prelude_string_new(dst);
if ( ret < 0 )
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic