threads / patch / 18269

patchRe: [PATCH JGIT] fix for 'negative position' error

Subject: Re: [PATCH JGIT] fix for 'negative position' error

## tl;dr

3 messages between Mar 11, 2009 and Mar 11, 2009. Diffs are folded; open one to read it.

replies: 2people: 2as markdown or json

Ruth Alkema· Mar 11, 2009, 15:19 UTC · lore

[PATCH JGIT] fix for 'negative position' error

>From 78972d51ddd6bcbdf25bd49d2a033c005cf301b1 
From: Ruth Alkema <ruth@diasoft.nl>
Date: Wed, 11 Mar 2009 15:49:22 +0100
Signed-off-by: Ruth Alkema <ruth@diasoft.nl>
---
 .../src/org/spearce/jgit/lib/WindowCache.java      |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)
Show changes to org.spearce.jgit/src/org/spearce/jgit/lib/WindowCache.java +1 −1
diff --git a/org.spearce.jgit/src/org/spearce/jgit/lib/WindowCache.java b/org.spearce.jgit/src/org/spearce/jgit/lib/WindowCache.java
index 4b7e10d..5340da9 100644
--- a/org.spearce.jgit/src/org/spearce/jgit/lib/WindowCache.java
+++ b/org.spearce.jgit/src/org/spearce/jgit/lib/WindowCache.java
@@ -253,7 +253,7 @@ private static synchronized final void getImpl(final WindowCursor curs,
 		releaseMemory();
 		runClearedWindowQueue();
 
-		wp.allocWindow(curs, id, id << windowSizeShift, wsz);
+		wp.allocWindow(curs, id, ((long) id) << windowSizeShift, wsz);
 		final ByteWindow<?> e = curs.window;
 		e.chainNext = cache[idx];
 		cache[idx] = e;
-- 
1.6.0.6
Shawn O. Pearce· Mar 11, 2009, 15:24 UTC · re: Ruth Alkema · lore
Ruth Alkema <ruth@diasoft.nl> wrote:
Show 10 quoted lines
> diff --git a/org.spearce.jgit/src/org/spearce/jgit/lib/WindowCache.java b/org.spearce.jgit/src/org/spearce/jgit/lib/WindowCache.java
> index 4b7e10d..5340da9 100644
> --- a/org.spearce.jgit/src/org/spearce/jgit/lib/WindowCache.java
> +++ b/org.spearce.jgit/src/org/spearce/jgit/lib/WindowCache.java
> @@ -253,7 +253,7 @@ private static synchronized final void getImpl(final WindowCursor curs,
>  		releaseMemory();
>  		runClearedWindowQueue();
>  
> -		wp.allocWindow(curs, id, id << windowSizeShift, wsz);
> +		wp.allocWindow(curs, id, ((long) id) << windowSizeShift, wsz);
Ouch.
Thanks for the fix!
-- 
Shawn.
Ruth Alkema· Mar 11, 2009, 15:51 UTC · re: Shawn O. Pearce · lore

On second thought, I think that my previous patch can still go wrong for large values in 'position' I think the following patch should work.

Kind regards, I hope the email is according to the guidelines for submitting patches, I am new to git, I used 'amend previous commit', I am not sure if that is correct in this case.
Ruth Alkema
>From 5e7200f02f91d948278fb515be59bfe2db535b66 Mon Sep 17 00:00:00 2001
From: Ruth Alkema <ruth@diasoft.nl>
Date: Wed, 11 Mar 2009 16:42:45 +0100
Subject: [PATCH] fix for 'negative position' error
Signed-off-by: Ruth Alkema <ruth@diasoft.nl>
---
 .../src/org/spearce/jgit/lib/WindowCache.java      |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)
Show changes to org.spearce.jgit/src/org/spearce/jgit/lib/WindowCache.java +1 −1
diff --git a/org.spearce.jgit/src/org/spearce/jgit/lib/WindowCache.java b/org.spearce.jgit/src/org/spearce/jgit/lib/WindowCache.java
index 4b7e10d..597ad61 100644
--- a/org.spearce.jgit/src/org/spearce/jgit/lib/WindowCache.java
+++ b/org.spearce.jgit/src/org/spearce/jgit/lib/WindowCache.java
@@ -253,7 +253,7 @@ private static synchronized final void getImpl(final WindowCursor curs,
 		releaseMemory();
 		runClearedWindowQueue();
 
-		wp.allocWindow(curs, id, id << windowSizeShift, wsz);
+		wp.allocWindow(curs, id, (position >> windowSizeShift) << windowSizeShift, wsz);
 		final ByteWindow<?> e = curs.window;
 		e.chainNext = cache[idx];
 		cache[idx] = e;
-- 
1.6.0.6


Shawn O. Pearce wrote:
> Ruth Alkema <ruth@diasoft.nl> wrote:
>> diff --git a/org.spearce.jgit/src/org/spearce/jgit/lib/WindowCache.java b/org.spearce.jgit/src/org/spearce/jgit/lib/WindowCache.java
>> index 4b7e10d..5340da9 100644
>> --- a/org.spearce.jgit/src/org/spearce/jgit/lib/WindowCache.java
>> +++ b/org.spearce.jgit/src/org/spearce/jgit/lib/WindowCache.java
>> @@ -253,7 +253,7 @@ private static synchronized final void getImpl(final WindowCursor curs,
>>  		releaseMemory();
>>  		runClearedWindowQueue();
>>  
>> -		wp.allocWindow(curs, id, id << windowSizeShift, wsz);
>> +		wp.allocWindow(curs, id, ((long) id) << windowSizeShift, wsz);
> 
> Ouch.
> 
> Thanks for the fix!
> 

← back to recent threads