@@ -171,21 +171,21 @@ public override int Read(ObjectId oid, out Stream data, out ObjectType objectTyp
171
171
172
172
MockGitObject gitObject ;
173
173
174
- if ( m_objectIdToContent . TryGetValue ( oid , out gitObject ) )
174
+ if ( ! m_objectIdToContent . TryGetValue ( oid , out gitObject ) )
175
175
{
176
- data = Allocate ( gitObject . Length ) ;
177
-
178
- foreach ( var chunk in gitObject . Data )
179
- {
180
- data . Write ( chunk , 0 , chunk . Length ) ;
181
- }
176
+ return ( int ) ReturnCode . GIT_ENOTFOUND ;
177
+ }
182
178
183
- objectType = gitObject . ObjectType ;
179
+ data = Allocate ( gitObject . Length ) ;
184
180
185
- return ( int ) ReturnCode . GIT_OK ;
181
+ foreach ( var chunk in gitObject . Data )
182
+ {
183
+ data . Write ( chunk , 0 , chunk . Length ) ;
186
184
}
187
185
188
- return ( int ) ReturnCode . GIT_ENOTFOUND ;
186
+ objectType = gitObject . ObjectType ;
187
+
188
+ return ( int ) ReturnCode . GIT_OK ;
189
189
}
190
190
191
191
public override int ReadPrefix ( byte [ ] shortOid , int len , out byte [ ] oid , out Stream data , out ObjectType objectType )
@@ -194,16 +194,16 @@ public override int ReadPrefix(byte[] shortOid, int len, out byte[] oid, out Str
194
194
data = null ;
195
195
objectType = default ( ObjectType ) ;
196
196
197
- MockGitObject gitObjectAlreadyFound = null ;
197
+ ObjectId matchingKey = null ;
198
198
199
- foreach ( MockGitObject gitObject in m_objectIdToContent . Values )
199
+ foreach ( ObjectId objectId in m_objectIdToContent . Keys )
200
200
{
201
201
bool match = true ;
202
202
203
203
int length = len >> 1 ;
204
204
for ( int i = 0 ; i < length ; i ++ )
205
205
{
206
- if ( gitObject . ObjectId . RawId [ i ] != shortOid [ i ] )
206
+ if ( objectId . RawId [ i ] != shortOid [ i ] )
207
207
{
208
208
match = false ;
209
209
break ;
@@ -212,7 +212,7 @@ public override int ReadPrefix(byte[] shortOid, int len, out byte[] oid, out Str
212
212
213
213
if ( match && ( ( len & 1 ) == 1 ) )
214
214
{
215
- var a = gitObject . ObjectId . RawId [ length ] >> 4 ;
215
+ var a = objectId . RawId [ length ] >> 4 ;
216
216
var b = shortOid [ length ] >> 4 ;
217
217
218
218
if ( a != b )
@@ -226,30 +226,29 @@ public override int ReadPrefix(byte[] shortOid, int len, out byte[] oid, out Str
226
226
continue ;
227
227
}
228
228
229
- if ( null != gitObjectAlreadyFound )
229
+ if ( matchingKey != null )
230
230
{
231
231
return ( int ) ReturnCode . GIT_EAMBIGUOUS ;
232
232
}
233
233
234
- gitObjectAlreadyFound = gitObject ;
234
+ matchingKey = objectId ;
235
235
}
236
236
237
- if ( null != gitObjectAlreadyFound )
237
+ if ( matchingKey == null )
238
238
{
239
- oid = gitObjectAlreadyFound . ObjectId . RawId ;
240
- objectType = gitObjectAlreadyFound . ObjectType ;
241
-
242
- data = Allocate ( gitObjectAlreadyFound . Length ) ;
239
+ return ( int ) ReturnCode . GIT_ENOTFOUND ; <
8000
/div>
240
+ }
243
241
244
- foreach ( var chunk in gitObjectAlreadyFound . Data )
245
- {
246
- data . Write ( chunk , 0 , chunk . Length ) ;
247
- }
242
+ int ret = Read ( matchingKey , out data , out objectType ) ;
248
243
249
- return ( int ) ReturnCode . GIT_OK ;
244
+ if ( ret != ( int ) ReturnCode . GIT_OK )
245
+ {
246
+ return ret ;
250
247
}
251
248
252
- return ( int ) ReturnCode . GIT_ENOTFOUND ;
249
+ oid = matchingKey . RawId ;
250
+
251
+ return ( int ) ReturnCode . GIT_OK ;
253
252
}
254
253
255
254
public override int Write ( ObjectId oid , Stream dataStream , long length , ObjectType objectType )
0 commit comments