Author: stefan2
Date: Wed Jun  5 11:53:23 2013
New Revision: 1489824

URL: http://svn.apache.org/r1489824
Log:
The standard C lib strtoul signature is flawed in that it effectively
loses the const qualifier from the input buffer when returning the
updated "end" location.  No need to make the same mistake in our
variant of it.

* subversion/include/private/svn_string_private.h
  (svn__strtoul): make output constness match input constness

* subversion/libsvn_subr/string.c
  (svn__strtoul): update implementation

* subversion/libsvn_subr/types.c
  (svn_revnum_parse): update caller

Modified:
    subversion/trunk/subversion/include/private/svn_string_private.h
    subversion/trunk/subversion/libsvn_subr/string.c
    subversion/trunk/subversion/libsvn_subr/types.c

Modified: subversion/trunk/subversion/include/private/svn_string_private.h
URL: 
http://svn.apache.org/viewvc/subversion/trunk/subversion/include/private/svn_string_private.h?rev=1489824&r1=1489823&r2=1489824&view=diff
==============================================================================
--- subversion/trunk/subversion/include/private/svn_string_private.h (original)
+++ subversion/trunk/subversion/include/private/svn_string_private.h Wed Jun  5 
11:53:23 2013
@@ -142,7 +142,7 @@ svn__strtoff(apr_off_t *offset, const ch
  * want to test for a more specific value range anyway.
  */
 unsigned long
-svn__strtoul(const char *buffer, char **end);
+svn__strtoul(const char *buffer, const char **end);
 
 /** Number of chars needed to represent signed (19 places + sign + NUL) or
  * unsigned (20 places + NUL) integers as strings.

Modified: subversion/trunk/subversion/libsvn_subr/string.c
URL: 
http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_subr/string.c?rev=1489824&r1=1489823&r2=1489824&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_subr/string.c (original)
+++ subversion/trunk/subversion/libsvn_subr/string.c Wed Jun  5 11:53:23 2013
@@ -1028,7 +1028,7 @@ svn__strtoff(apr_off_t *offset, const ch
 }
 
 unsigned long
-svn__strtoul(const char *buffer, char **end)
+svn__strtoul(const char* buffer, const char** end)
 {
   unsigned long result = 0;
 
@@ -1052,7 +1052,7 @@ svn__strtoul(const char *buffer, char **
       ++buffer;
     }
 
-  *end = (char *)buffer;
+  *end = buffer;
   return result;
 }
 

Modified: subversion/trunk/subversion/libsvn_subr/types.c
URL: 
http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_subr/types.c?rev=1489824&r1=1489823&r2=1489824&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_subr/types.c (original)
+++ subversion/trunk/subversion/libsvn_subr/types.c Wed Jun  5 11:53:23 2013
@@ -39,7 +39,7 @@ svn_revnum_parse(svn_revnum_t *rev,
                  const char *str,
                  const char **endptr)
 {
-  char *end;
+  const char *end;
 
   svn_revnum_t result = (svn_revnum_t)svn__strtoul(str, &end);
 


Reply via email to