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

3 messages from 2009-03-11 to 2009-03-11. Participants: Shawn O. Pearce, Ruth Alkema.
Thread: https://gitlist.dev/t/18269

## Ruth Alkema, 2009-03-11 15:19

Subject: [PATCH JGIT] fix for 'negative position' error
Message-ID: <49B7D683.1070805@diasoft.nl>
URL: https://gitlist.dev/e/49B7D683.1070805%40diasoft.nl

```
>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(-)

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, 2009-03-11 15:24

Subject: Re: [PATCH JGIT] fix for 'negative position' error
Message-ID: <20090311152442.GS11989@spearce.org>
URL: https://gitlist.dev/e/20090311152442.GS11989%40spearce.org
In-Reply-To: <49B7D683.1070805@diasoft.nl>

```
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!

-- 
Shawn.

```

## Ruth Alkema, 2009-03-11 15:51

Subject: Re: [PATCH JGIT] fix for 'negative position' error
Message-ID: <49B7DDE9.7070407@diasoft.nl>
URL: https://gitlist.dev/e/49B7DDE9.7070407%40diasoft.nl
In-Reply-To: <20090311152442.GS11989@spearce.org>

```
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(-)

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!
> 

```
