This patch is updated to remove the portions of the code 'fixed' by
the apr_md5* prototype change. For some reason, two other files
generated warnings now. Odd, but they're now in this patch with
resolutions.
Any comments before I commit? (I'll run 'make check' first, of
course.) -- justin
* subversion/libsvn_wc/props.c (svn_wc__conflicting_propchanges_p):
Rework code that is unreachable. (The answer to the comment is
'no.')
* subversion/libsvn_subr/svn_base64.c
(encode_baton): Make buf an unsigned char.
(encode_partial_group): Make extra an unsigned char.
(svn_base64_encode_string): Make ingroup an unsigned char.
(svn_base64_from_md5): Attempt to deal with signed/unsigned
mismatch by
removing some abstractions that only deal with 'char'
* subversion/libsvn_subr/quoprint.c
(decode_bytes): Make inbuf a char.
(svn_quoprint_decode_string): Make ingroup a char.
* subversion/libsvn_subr/path.c
(svn_path_is_child): Rework code that is unreachable by
consolidating the
only path that returns a non-NULL value.
Index: subversion/libsvn_wc/props.c
===================================================================
--- subversion/libsvn_wc/props.c (revision 4499)
+++ subversion/libsvn_wc/props.c (working copy)
@@ -202,12 +202,9 @@
local-name, local-value-data, update-value-data);
return TRUE; /* conflict */
}
- else
- /* values are the same, so another implicit merge. */
- return FALSE; /* no conflict */
- /* Default (will anyone ever reach this line?) */
- return FALSE; /* no conflict found */
+ /* values are the same, so another implicit merge. */
+ return FALSE; /* no conflict */
}
Index: subversion/libsvn_subr/svn_base64.c
===================================================================
--- subversion/libsvn_subr/svn_base64.c (revision 4499)
+++ subversion/libsvn_subr/svn_base64.c (working copy)
@@ -40,7 +40,7 @@
struct encode_baton {
svn_stream_t *output;
- char buf[3]; /* Bytes waiting to be encoded */
+ unsigned char buf[3]; /* Bytes waiting to be encoded */
int buflen; /* Number of bytes waiting */
int linelen; /* Bytes output so far on this line
*/
apr_pool_t *pool;
@@ -99,8 +99,8 @@
/* Encode leftover data, if any, and possibly a final newline,
appending to STR. LEN must be in the range 0..2. */
static void
-encode_partial_group (svn_stringbuf_t *str, const char *extra, int
len,
- int linelen)
+encode_partial_group (svn_stringbuf_t *str, const unsigned char
*extra,
+ int len, int linelen)
{
unsigned char ingroup[3];
char outgroup[4];
@@ -184,7 +184,7 @@
svn_base64_encode_string (svn_stringbuf_t *str, apr_pool_t *pool)
{
svn_stringbuf_t *encoded = svn_stringbuf_create (, pool);
- char ingroup[3];
+ unsigned char ingroup[3];
int ingrouplen = 0, linelen = 0;
encode_bytes (encoded, str-data, str-len, ingroup, ingrouplen,
linelen);
@@ -333,10 +333,17 @@
svn_base64_from_md5 (unsigned char digest[], apr_pool_t *pool)
{
svn_stringbuf_t *md5str;
+ unsigned char ingroup[3];
+ int ingrouplen = 0, linelen = 0;
+ md5str = svn_stringbuf_create (, pool);
+
+ /* This cast is safe because we know encode_bytes does a memcpy and
+ * does an implicit unsigned char * cast.
+ */
+ encode_bytes (md5str, (char*)digest, MD5_DIGESTSIZE, ingroup,
ingrouplen,
+ linelen);
+ encode_partial_group (md5str, ingroup, ingrouplen, linelen);
- md5str = svn_stringbuf_ncreate (digest, MD5_DIGESTSIZE, pool);
- md5str = svn_base64_encode_string (md5str, pool);
-
/* Our base64-encoding routines append a final newline if any data
was created at all, so let's hack that off. */
if ((md5str)-len)
Index: subversion/libsvn_subr/quoprint.c
===================================================================
--- subversion/libsvn_subr/quoprint.c (revision 4499)
+++ subversion/libsvn_subr/quoprint.c (working copy)
@@ -200,7 +200,7 @@
appended to STR. */
static void
decode_bytes (svn_stringbuf_t *str, const char *data, apr_size_t len,
- unsigned char *inbuf, int *inbuflen)
+ char *inbuf, int *inbuflen)
{
const char *p, *find1, *find2;
char c;
@@ -296,7 +296,7 @@
svn_quoprint_decode_string (svn_stringbuf_t *str, apr_pool_t *pool)
{
svn_stringbuf_t *decoded = svn_stringbuf_create (, pool);
- unsigned char ingroup[4];
+ char ingroup[4];
int ingrouplen = 0;
decode_bytes (decoded, str-data, str-len, ingroup, ingrouplen);
Index: subversion/libsvn_subr/path.c
===================================================================
--- subversion/libsvn_subr/path.c (revision 4499)
+++ subversion/libsvn_subr/path.c (working copy)
@@ -538,24 +538,16 @@
return NULL;
}
- /* Now run through the possibilities. */
+ /* The only possibility for it being child here is when path1 is
now blank,
+ * and path 2 is the beginning of a directory.
+ */
- if (path1[i] (! path2[i]))
+ if ((! path1[i]) path2[i] path2[i] == '/')
{
- return NULL;
- }
- else if ((! path1[i]) path2[i])
- {
- if (path2[i] == '/')
- return apr_pstrdup (pool, path2 + i + 1);
- else
- return NULL;
- }
- else /* both ended */
- {
- return NULL;
+ return apr_pstrdup (pool, path2 + i + 1);
}
+ /* Otherwise, path2 isn't a child. */
return NULL;
}
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Sat Oct 14 02:06:20 2006