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

Re: [PATCH] JavaHL: Explicitly pass jobject jthis when processing dispose() call rather than stashing a reference in the SVNBase class where it can be missused later

From: Hyrum K Wright <hyrum.wright_at_wandisco.com>
Date: Fri, 25 May 2012 15:30:10 -0500

Are you talking about maintaining the directory baton in the context
of something like an editor drive?

-Hyrum

On Fri, May 25, 2012 at 2:29 PM, Vladimir Berezniker <vmpn_at_hitechman.com> wrote:
> The reason they are long lived is because they are reusable. E.g. directory
> can be used for any number of files/directories within it.  However,
> regarding not needing to keep track of objects I think I see where you
> are coming from. At the moment the parent and child objects are tied because
> I allocated child pools from parent pools therefore their order of cleanup
> is important.  The reason for that design was that I could free up child
> resources when the parent was disposed even if the children were not. But of
> the top of my head I cannot see why it has to be this way. For example child
> object pools can be allocated from the global JNI pool instead
> thus eliminating the need to track children.  Code will be simpler but the
> JavaHL users won't be as protected from themselves.
>
> I need to dig through the code and think about it some more,
>
> Vladimir
>
>
> On Fri, May 25, 2012 at 2:36 PM, Hyrum K Wright <hyrum.wright_at_wandisco.com>
> wrote:
>>
>> +1 to commit to trunk.  Please include "Approved by: hwright" in the
>> log message.
>>
>> Out of curiosity, why do directory objects need to live across method
>> invocations with the RA interface?  I would have thought that even if
>> this is true, it won't matter, since those objects would be pure Java
>> objects handled by the JVM.
>>
>> -Hyrum
>>
>> On Fri, May 25, 2012 at 12:35 PM, Vladimir Berezniker
>> <vmpn_at_hitechman.com> wrote:
>> > Greetings,
>> >
>> > Currently SVNBase class uses a member variable jthis to hold a copy of
>> > jobject
>> > reference. This variable lives as long as SVNClient object lives,
>> > however,
>> > the
>> > reference itself is only valid during a single JNI call.  To address
>> > this
>> > mismatch
>> > the attached patch passes the jobject reference as a parameter instead.
>> >  This
>> > eliminates the risk of the jobject reference being misused outside the
>> > scope
>> > where it is valid.  This mismatch becomes more evident on JavaHL
>> > RA editor API is implemented where objects like directories live across
>> > method
>> > calls.
>> >
>> > [[[
>> > JavaHL: Explicitly pass jobject jthis when processing dispose() call
>> > rather
>> >  than stashing a reference in the SVNBase class where it can be misused
>> > later
>> >
>> > [ in subversion/bindings/javahl/native ]
>> >
>> > * SVNBase.cpp,
>> >   SVNBase.h
>> >   (dispose, jthis): Accept jobject jthis as explicit parameter to
>> > dispose()
>> > and
>> >                     delete the member variable jthis
>> >
>> > * SVNClient.cpp,
>> >   SVNClient.h,
>> >   SVNRepos.cpp,
>> >   SVNRepos.h
>> >   (dispose): Accept object jthis as explicit parameter and pass it to
>> >              SVNBase::dispose
>> >
>> > * org_apache_subversion_javahl_SVNClient.cpp,
>> >   org_apache_subversion_javahl_SVNRepos.cpp
>> >   (Java_org_apache_subversion_javahl_SVNClient_dispose,
>> >    Java_org_apache_subversion_javahl_SVNRepos_dispose):
>> >    Pass object jthis as explicit parameter and pass it to the C++
>> > wrapper
>> > class
>> > ]]]
>> >
>> > Thank you,
>> >
>> > Vladimir
>>
>>
>>
>> --
>>
>> uberSVN: Apache Subversion Made Easy
>> http://www.uberSVN.com/
>
>

-- 
uberSVN: Apache Subversion Made Easy
http://www.uberSVN.com/
Received on 2012-05-25 22:30:43 CEST

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