[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:47:44 CET

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?

--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:47:56 2007

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