[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