[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: svn commit: r28605 - in trunk/subversion: include libsvn_client libsvn_subr svn

From: David Glasser <glasser_at_davidglasser.net>
Date: 2007-12-27 19:50:15 CET

On Dec 27, 2007 10:47 AM, David Glasser <glasser@davidglasser.net> wrote:
>
> On Dec 27, 2007 10:39 AM, Joe Swatosh <joe.swatosh@gmail.com> wrote:
> > Hi Mike,
> >
> > I can't seem to get the Ruby bindings tests to pass after this commit....
> >
> > On Dec 20, 2007 12:19 PM, <cmpilato@tigris.org> wrote:
> > > Author: cmpilato
> > > Date: Thu Dec 20 12:19:20 2007
> > > New Revision: 28605
> > >
> > > Log:
> > > Teach svn_client_get_changelist[s]() to handle multiple changelists,
> > > or to report on any changelists found.
> > >
> > > * subversion/include/svn_client.h
> > > (svn_changelist_receiver_t): Add 'changelist' parameter.
> > > (svn_client_get_changelists): Was svn_client_get_changelist().
> > >
> > > * subversion/libsvn_client/changelist.c
> > > (struct fe_baton): Trade string 'changelist' for hash 'changelists'.
> > > (found_an_entry): Check against a changelists hash instead of a
> > > single string, and pass changelist name to the callback function.
> > > (svn_client_get_changelists): Was svn_client_get_changelist().
> > > Update use of fe_baton, building a hash of changelist names to be
> > > checked.
> > >
> > > * subversion/include/svn_hash.h,
> > > * subversion/libsvn_subr/hash.c
> > > (svn_hash_from_array): New.
> > >
> > > * subversion/svn/util.c
> > > (svn_cl__get_changelist): Update call to svn_client_get_changelists().
> > >
> >
> >
> >
> > > Modified: trunk/subversion/libsvn_client/changelist.c
> > > URL: http://svn.collab.net/viewvc/svn/trunk/subversion/libsvn_client/changelist.c?pathrev=28605&r1=28604&r2=28605
> > > ==============================================================================
> > > --- trunk/subversion/libsvn_client/changelist.c (original)
> > > +++ trunk/subversion/libsvn_client/changelist.c Thu Dec 20 12:19:20 2007
> > > @@ -25,6 +25,7 @@
> > > #include "svn_client.h"
> > > #include "svn_wc.h"
> > > #include "svn_pools.h"
> > > +#include "svn_hash.h"
> > >
> > > #include "client.h"
> > >
> > > @@ -78,7 +79,7 @@
> > > {
> > > svn_changelist_receiver_t callback_func;
> > > void *callback_baton;
> > > - const char *changelist_name;
> > > + apr_hash_t *changelists;
> > > apr_pool_t *pool;
> > > };
> > >
> > > @@ -92,16 +93,19 @@
> > > struct fe_baton *b = (struct fe_baton *)baton;
> > >
> > > /* If the entry has a changelist, and is a file or is the "this-dir"
> > > - entry for directory, and the changelist matches what we're looking
> > > - for... */
> > > + entry for directory, and the changelist matches one that we're
> > > + looking for (or we aren't looking for any in particular)... */
> > > if (entry->changelist
> > > + && ((! b->changelists)
> > > + || apr_hash_get(b->changelists, entry->changelist,
> > > + APR_HASH_KEY_STRING))
> > > && ((entry->kind == svn_node_file)
> > > || ((entry->kind == svn_node_dir)
> > > - && (strcmp(entry->name, SVN_WC_ENTRY_THIS_DIR) == 0)))
> > > - && (strcmp(entry->changelist, b->changelist_name) == 0))
> > > + && (strcmp(entry->name, SVN_WC_ENTRY_THIS_DIR) == 0))))
> > > {
> > > /* ...then call the callback function. */
> > > - SVN_ERR(b->callback_func(b->callback_baton, path, pool));
> > > + SVN_ERR(b->callback_func(b->callback_baton, path,
> > > + entry->changelist, pool));
> > > }
> > >
> > > return SVN_NO_ERROR;
> >
> > .... this is were the issue seems to be. The call to apr_hash_get()
> > above is always
> > returning zero. I did a little experimenting and it appears that it
> > only finds the key
> > if it is a pointer to the same string rather than a string with the
> > same value.
> >
> > I guess this is not the expected behavior since the length is
> > APR_HASH_KEY_STRING.
> > Perhaps the problem is actually in svn_hash_from_array() where the
> > apr_hash_set() is
> > called with a length of keys->elt_size?
> >
> > Maybe I'm all wet, but I could sure use some help.
>
> I wonder if it could be a pool issue? ie, the original key got destroyed?

Actually, did r28630 fix this?

--dave

-- 
David Glasser | glasser_at_davidglasser.net | http://www.davidglasser.net/
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Thu Dec 27 19:50:28 2007

This is an archived mail posted to the Subversion Dev mailing list.