You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by st...@apache.org on 2013/11/19 23:17:09 UTC
svn commit: r1543596 - in /subversion/trunk/subversion:
libsvn_fs_x/changes.c libsvn_fs_x/noderevs.c libsvn_fs_x/reps.c
libsvn_fs_x/string_table.c libsvn_subr/packed_data.c
Author: stefan2
Date: Tue Nov 19 22:17:09 2013
New Revision: 1543596
URL: http://svn.apache.org/r1543596
Log:
Silence a number of integer size conversion warnings by casting the output
of our rather generic reader functions to the correct target type.
* subversion/libsvn_fs_x/string_table.c
(svn_fs_x__read_string_table): explicitly cast to the target type
* subversion/libsvn_fs_x/reps.c
(svn_fs_x__read_reps_container): ditto
* subversion/libsvn_fs_x/noderevs.c
(svn_fs_x__read_noderes_container): ditto
* subversion/libsvn_fs_x/changes.c
(svn_fs_x__read_changes_container): ditto
* subversion/libsvn_subr/packed_data.c
(svn_packed__get_bytes): ditto
Modified:
subversion/trunk/subversion/libsvn_fs_x/changes.c
subversion/trunk/subversion/libsvn_fs_x/noderevs.c
subversion/trunk/subversion/libsvn_fs_x/reps.c
subversion/trunk/subversion/libsvn_fs_x/string_table.c
subversion/trunk/subversion/libsvn_subr/packed_data.c
Modified: subversion/trunk/subversion/libsvn_fs_x/changes.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_fs_x/changes.c?rev=1543596&r1=1543595&r2=1543596&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_fs_x/changes.c (original)
+++ subversion/trunk/subversion/libsvn_fs_x/changes.c Tue Nov 19 22:17:09 2013
@@ -413,17 +413,17 @@ svn_fs_x__read_changes_container(svn_fs_
{
binary_change_t change;
- change.flags = svn_packed__get_uint(changes_stream);
- change.path = svn_packed__get_uint(changes_stream);
+ change.flags = (int)svn_packed__get_uint(changes_stream);
+ change.path = (apr_size_t)svn_packed__get_uint(changes_stream);
- change.copyfrom_rev = svn_packed__get_uint(changes_stream);
- change.copyfrom_path = svn_packed__get_uint(changes_stream);
+ change.copyfrom_rev = (svn_revnum_t)svn_packed__get_uint(changes_stream);
+ change.copyfrom_path = (apr_size_t)svn_packed__get_uint(changes_stream);
- change.node_id.revision = svn_packed__get_uint(changes_stream);
+ change.node_id.revision = (svn_revnum_t)svn_packed__get_uint(changes_stream);
change.node_id.number = svn_packed__get_uint(changes_stream);
- change.copy_id.revision = svn_packed__get_uint(changes_stream);
+ change.copy_id.revision = (svn_revnum_t)svn_packed__get_uint(changes_stream);
change.copy_id.number = svn_packed__get_uint(changes_stream);
- change.rev_id.revision = svn_packed__get_uint(changes_stream);
+ change.rev_id.revision = (svn_revnum_t)svn_packed__get_uint(changes_stream);
change.rev_id.number = svn_packed__get_uint(changes_stream);
APR_ARRAY_PUSH(changes->changes, binary_change_t) = change;
Modified: subversion/trunk/subversion/libsvn_fs_x/noderevs.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_fs_x/noderevs.c?rev=1543596&r1=1543595&r2=1543596&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_fs_x/noderevs.c (original)
+++ subversion/trunk/subversion/libsvn_fs_x/noderevs.c Tue Nov 19 22:17:09 2013
@@ -710,9 +710,9 @@ read_reps(apr_array_header_t **reps_p,
{
binary_representation_t rep;
- rep.has_sha1 = svn_packed__get_uint(rep_stream);
+ rep.has_sha1 = (svn_boolean_t)svn_packed__get_uint(rep_stream);
- rep.revision = svn_packed__get_uint(rep_stream);
+ rep.revision = (svn_revnum_t)svn_packed__get_uint(rep_stream);
rep.item_index = svn_packed__get_uint(rep_stream);
rep.size = svn_packed__get_uint(rep_stream);
rep.expanded_size = svn_packed__get_uint(rep_stream);
@@ -793,11 +793,11 @@ svn_fs_x__read_noderevs_container(svn_fs
{
binary_id_t id;
- id.node_id.revision = svn_packed__get_uint(ids_stream);
+ id.node_id.revision = (svn_revnum_t)svn_packed__get_uint(ids_stream);
id.node_id.number = svn_packed__get_uint(ids_stream);
- id.copy_id.revision = svn_packed__get_uint(ids_stream);
+ id.copy_id.revision = (svn_revnum_t)svn_packed__get_uint(ids_stream);
id.copy_id.number = svn_packed__get_uint(ids_stream);
- id.rev_id.revision = svn_packed__get_uint(ids_stream);
+ id.rev_id.revision = (svn_revnum_t)svn_packed__get_uint(ids_stream);
id.rev_id.number = svn_packed__get_uint(ids_stream);
APR_ARRAY_PUSH(noderevs->ids, binary_id_t) = id;
@@ -818,28 +818,29 @@ svn_fs_x__read_noderevs_container(svn_fs
{
binary_noderev_t noderev;
- noderev.flags = svn_packed__get_uint(noderevs_stream);
+ noderev.flags = (apr_uint32_t)svn_packed__get_uint(noderevs_stream);
- noderev.id = svn_packed__get_uint(noderevs_stream);
- noderev.predecessor_id = svn_packed__get_uint(noderevs_stream);
- noderev.predecessor_count = svn_packed__get_uint(noderevs_stream);
-
- noderev.copyfrom_path = svn_packed__get_uint(noderevs_stream);
- noderev.copyfrom_rev = svn_packed__get_uint(noderevs_stream);
- noderev.copyroot_path = svn_packed__get_uint(noderevs_stream);
- noderev.copyroot_rev = svn_packed__get_uint(noderevs_stream);
-
- noderev.prop_rep = svn_packed__get_uint(noderevs_stream);
- noderev.data_rep.representation = svn_packed__get_uint(noderevs_stream);
+ noderev.id = (int)svn_packed__get_uint(noderevs_stream);
+ noderev.predecessor_id = (int)svn_packed__get_uint(noderevs_stream);
+ noderev.predecessor_count = (int)svn_packed__get_uint(noderevs_stream);
+
+ noderev.copyfrom_path = (int)svn_packed__get_uint(noderevs_stream);
+ noderev.copyfrom_rev = (svn_revnum_t)svn_packed__get_uint(noderevs_stream);
+ noderev.copyroot_path = (int)svn_packed__get_uint(noderevs_stream);
+ noderev.copyroot_rev = (svn_revnum_t)svn_packed__get_uint(noderevs_stream);
+
+ noderev.prop_rep = (int)svn_packed__get_uint(noderevs_stream);
+ noderev.data_rep.representation
+ = (int)svn_packed__get_uint(noderevs_stream);
noderev.data_rep.uniquifier.txn_id.revision
- = svn_packed__get_uint(noderevs_stream);
+ = (svn_revnum_t)svn_packed__get_uint(noderevs_stream);
noderev.data_rep.uniquifier.txn_id.number
= svn_packed__get_uint(noderevs_stream);
noderev.data_rep.uniquifier.number
= svn_packed__get_uint(noderevs_stream);
- noderev.created_path = svn_packed__get_uint(noderevs_stream);
+ noderev.created_path = (int)svn_packed__get_uint(noderevs_stream);
noderev.mergeinfo_count = svn_packed__get_uint(noderevs_stream);
APR_ARRAY_PUSH(noderevs->noderevs, binary_noderev_t) = noderev;
Modified: subversion/trunk/subversion/libsvn_fs_x/reps.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_fs_x/reps.c?rev=1543596&r1=1543595&r2=1543596&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_fs_x/reps.c (original)
+++ subversion/trunk/subversion/libsvn_fs_x/reps.c Tue Nov 19 22:17:09 2013
@@ -777,10 +777,10 @@ svn_fs_x__read_reps_container(svn_fs_x__
for (i = 0; i < reps->base_count; ++i)
{
base_t *base = bases + i;
- base->revision = svn_packed__get_int(bases_stream);
+ base->revision = (svn_revnum_t)svn_packed__get_int(bases_stream);
base->item_index = svn_packed__get_uint(bases_stream);
- base->priority = svn_packed__get_uint(bases_stream);
- base->rep = svn_packed__get_uint(bases_stream);
+ base->priority = (int)svn_packed__get_uint(bases_stream);
+ base->rep = (apr_uint32_t)svn_packed__get_uint(bases_stream);
}
/* de-serialize instructions */
@@ -795,8 +795,10 @@ svn_fs_x__read_reps_container(svn_fs_x__
for (i = 0; i < reps->instruction_count; ++i)
{
instruction_t *instruction = instructions + i;
- instruction->offset = svn_packed__get_int(instructions_stream);
- instruction->count = svn_packed__get_uint(instructions_stream);
+ instruction->offset
+ = (apr_int32_t)svn_packed__get_int(instructions_stream);
+ instruction->count
+ = (apr_uint32_t)svn_packed__get_uint(instructions_stream);
}
/* de-serialize reps */
@@ -812,7 +814,7 @@ svn_fs_x__read_reps_container(svn_fs_x__
first_instructions[reps->rep_count] = reps->instruction_count;
/* other elements */
- reps->base_text_len = svn_packed__get_uint(misc_stream);
+ reps->base_text_len = (apr_size_t)svn_packed__get_uint(misc_stream);
/* return result */
*container = reps;
Modified: subversion/trunk/subversion/libsvn_fs_x/string_table.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_fs_x/string_table.c?rev=1543596&r1=1543595&r2=1543596&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_fs_x/string_table.c (original)
+++ subversion/trunk/subversion/libsvn_fs_x/string_table.c Tue Nov 19 22:17:09 2013
@@ -673,7 +673,7 @@ svn_fs_x__read_string_table(string_table
/* create sub-tables */
- table->size = svn_packed__get_uint(table_sizes);
+ table->size = (apr_size_t)svn_packed__get_uint(table_sizes);
table->sub_tables = apr_pcalloc(result_pool,
table->size * sizeof(*table->sub_tables));
@@ -683,7 +683,8 @@ svn_fs_x__read_string_table(string_table
{
string_sub_table_t *sub_table = &table->sub_tables[i];
- sub_table->short_string_count = svn_packed__get_uint(table_sizes);
+ sub_table->short_string_count
+ = (apr_size_t)svn_packed__get_uint(table_sizes);
if (sub_table->short_string_count)
{
sub_table->short_strings
@@ -696,10 +697,10 @@ svn_fs_x__read_string_table(string_table
{
string_header_t *string = &sub_table->short_strings[k];
- string->head_string = svn_packed__get_uint(headers);
- string->head_length = svn_packed__get_uint(headers);
- string->tail_start = svn_packed__get_uint(headers);
- string->tail_length = svn_packed__get_uint(headers);
+ string->head_string = (apr_uint16_t)svn_packed__get_uint(headers);
+ string->head_length = (apr_uint16_t)svn_packed__get_uint(headers);
+ string->tail_start = (apr_uint16_t)svn_packed__get_uint(headers);
+ string->tail_length = (apr_uint16_t)svn_packed__get_uint(headers);
}
}
Modified: subversion/trunk/subversion/libsvn_subr/packed_data.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_subr/packed_data.c?rev=1543596&r1=1543595&r2=1543596&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_subr/packed_data.c (original)
+++ subversion/trunk/subversion/libsvn_subr/packed_data.c Tue Nov 19 22:17:09 2013
@@ -849,7 +849,7 @@ svn_packed__get_bytes(svn_packed__byte_s
apr_size_t *len)
{
const char *result = stream->packed->data;
- apr_size_t count = svn_packed__get_uint(stream->lengths_stream);
+ apr_size_t count = (apr_size_t)svn_packed__get_uint(stream->lengths_stream);
if (count > stream->packed->len)
count = stream->packed->len;
Re: svn commit: r1543596 - in /subversion/trunk/subversion:
libsvn_fs_x/changes.c libsvn_fs_x/noderevs.c libsvn_fs_x/reps.c
libsvn_fs_x/string_table.c libsvn_subr/packed_data.c
Posted by Stefan Fuhrmann <st...@wandisco.com>.
On Tue, Nov 19, 2013 at 11:45 PM, Bert Huijben <be...@qqmail.nl> wrote:
>
>
> > -----Original Message-----
> > From: stefan2@apache.org [mailto:stefan2@apache.org]
> > Sent: dinsdag 19 november 2013 23:17
> > To: commits@subversion.apache.org
> > Subject: svn commit: r1543596 - in /subversion/trunk/subversion:
> > libsvn_fs_x/changes.c libsvn_fs_x/noderevs.c libsvn_fs_x/reps.c
> > libsvn_fs_x/string_table.c libsvn_subr/packed_data.c
> >
> > Author: stefan2
> > Date: Tue Nov 19 22:17:09 2013
> > New Revision: 1543596
> >
> > URL: http://svn.apache.org/r1543596
> > Log:
> > Silence a number of integer size conversion warnings by casting the
> output
> > of our rather generic reader functions to the correct target type.
> >
> > * subversion/libsvn_fs_x/string_table.c
> > (svn_fs_x__read_string_table): explicitly cast to the target type
> > * subversion/libsvn_fs_x/reps.c
> > (svn_fs_x__read_reps_container): ditto
> > * subversion/libsvn_fs_x/noderevs.c
> > (svn_fs_x__read_noderes_container): ditto
> > * subversion/libsvn_fs_x/changes.c
> > (svn_fs_x__read_changes_container): ditto
> > * subversion/libsvn_subr/packed_data.c
> > (svn_packed__get_bytes): ditto
> >
> > Modified:
> > subversion/trunk/subversion/libsvn_fs_x/changes.c
> > subversion/trunk/subversion/libsvn_fs_x/noderevs.c
> > subversion/trunk/subversion/libsvn_fs_x/reps.c
> > subversion/trunk/subversion/libsvn_fs_x/string_table.c
> > subversion/trunk/subversion/libsvn_subr/packed_data.c
> >
> > Modified: subversion/trunk/subversion/libsvn_fs_x/changes.c
> > URL:
> > http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_fs_x/cha
> > nges.c?rev=1543596&r1=1543595&r2=1543596&view=diff
> > ==========================================================
> > ====================
> > --- subversion/trunk/subversion/libsvn_fs_x/changes.c (original)
> > +++ subversion/trunk/subversion/libsvn_fs_x/changes.c Tue Nov 19
> > 22:17:09 2013
> > @@ -413,17 +413,17 @@ svn_fs_x__read_changes_container(svn_fs_
> > {
> > binary_change_t change;
> >
> > - change.flags = svn_packed__get_uint(changes_stream);
> > - change.path = svn_packed__get_uint(changes_stream);
> > + change.flags = (int)svn_packed__get_uint(changes_stream);
> > + change.path = (apr_size_t)svn_packed__get_uint(changes_stream);
> >
> > - change.copyfrom_rev = svn_packed__get_uint(changes_stream);
> > - change.copyfrom_path = svn_packed__get_uint(changes_stream);
> > + change.copyfrom_rev =
> > (svn_revnum_t)svn_packed__get_uint(changes_stream);
> > + change.copyfrom_path =
> > (apr_size_t)svn_packed__get_uint(changes_stream);
>
> I'm not really familiar with the fsx disk format, but in all the other
> Subversion layers copyfrom_rev would be -1 (=SVN_INVALID_REVNUM) when not
> copied, so svn_revnum_t can't be one-on-one expressed as an uint.
>
Good catch. r1543623 treats all revisions in there as integers.
The serialization API can then decide how to encode it portably.
-- Stefan^2.
RE: svn commit: r1543596 - in /subversion/trunk/subversion: libsvn_fs_x/changes.c libsvn_fs_x/noderevs.c libsvn_fs_x/reps.c libsvn_fs_x/string_table.c libsvn_subr/packed_data.c
Posted by Bert Huijben <be...@qqmail.nl>.
> -----Original Message-----
> From: stefan2@apache.org [mailto:stefan2@apache.org]
> Sent: dinsdag 19 november 2013 23:17
> To: commits@subversion.apache.org
> Subject: svn commit: r1543596 - in /subversion/trunk/subversion:
> libsvn_fs_x/changes.c libsvn_fs_x/noderevs.c libsvn_fs_x/reps.c
> libsvn_fs_x/string_table.c libsvn_subr/packed_data.c
>
> Author: stefan2
> Date: Tue Nov 19 22:17:09 2013
> New Revision: 1543596
>
> URL: http://svn.apache.org/r1543596
> Log:
> Silence a number of integer size conversion warnings by casting the output
> of our rather generic reader functions to the correct target type.
>
> * subversion/libsvn_fs_x/string_table.c
> (svn_fs_x__read_string_table): explicitly cast to the target type
> * subversion/libsvn_fs_x/reps.c
> (svn_fs_x__read_reps_container): ditto
> * subversion/libsvn_fs_x/noderevs.c
> (svn_fs_x__read_noderes_container): ditto
> * subversion/libsvn_fs_x/changes.c
> (svn_fs_x__read_changes_container): ditto
> * subversion/libsvn_subr/packed_data.c
> (svn_packed__get_bytes): ditto
>
> Modified:
> subversion/trunk/subversion/libsvn_fs_x/changes.c
> subversion/trunk/subversion/libsvn_fs_x/noderevs.c
> subversion/trunk/subversion/libsvn_fs_x/reps.c
> subversion/trunk/subversion/libsvn_fs_x/string_table.c
> subversion/trunk/subversion/libsvn_subr/packed_data.c
>
> Modified: subversion/trunk/subversion/libsvn_fs_x/changes.c
> URL:
> http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_fs_x/cha
> nges.c?rev=1543596&r1=1543595&r2=1543596&view=diff
> ==========================================================
> ====================
> --- subversion/trunk/subversion/libsvn_fs_x/changes.c (original)
> +++ subversion/trunk/subversion/libsvn_fs_x/changes.c Tue Nov 19
> 22:17:09 2013
> @@ -413,17 +413,17 @@ svn_fs_x__read_changes_container(svn_fs_
> {
> binary_change_t change;
>
> - change.flags = svn_packed__get_uint(changes_stream);
> - change.path = svn_packed__get_uint(changes_stream);
> + change.flags = (int)svn_packed__get_uint(changes_stream);
> + change.path = (apr_size_t)svn_packed__get_uint(changes_stream);
>
> - change.copyfrom_rev = svn_packed__get_uint(changes_stream);
> - change.copyfrom_path = svn_packed__get_uint(changes_stream);
> + change.copyfrom_rev =
> (svn_revnum_t)svn_packed__get_uint(changes_stream);
> + change.copyfrom_path =
> (apr_size_t)svn_packed__get_uint(changes_stream);
I'm not really familiar with the fsx disk format, but in all the other Subversion layers copyfrom_rev would be -1 (=SVN_INVALID_REVNUM) when not copied, so svn_revnum_t can't be one-on-one expressed as an uint.
Is there a specific conversion that sets the revision to invalid in some other place?
(Otherwise adding the cast from uint64 might hide a real problem)
Bert