<feed xmlns='http://www.w3.org/2005/Atom'>
<title>delta/libgit2.git/src/mwindow.c, branch cmn/openssl-sys</title>
<subtitle>github.com: libgit2/libgit2.git
</subtitle>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/libgit2.git/'/>
<entry>
<title>mwindow: clean up pack map at shutdown</title>
<updated>2014-10-27T02:27:56+00:00</updated>
<author>
<name>Edward Thomson</name>
<email>ethomson@edwardthomson.com</email>
</author>
<published>2014-10-25T23:53:07+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/libgit2.git/commit/?id=8c8ca7309b5b1f81d706226bd9f9ed6e3346e63a'/>
<id>8c8ca7309b5b1f81d706226bd9f9ed6e3346e63a</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>pack: clean up error returns</title>
<updated>2014-06-25T19:35:58+00:00</updated>
<author>
<name>Carlos Martín Nieto</name>
<email>cmn@dwim.me</email>
</author>
<published>2014-06-25T19:35:58+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/libgit2.git/commit/?id=c19b1c0442b52e07f1c9f48b65ef0b3823eaa526'/>
<id>c19b1c0442b52e07f1c9f48b65ef0b3823eaa526</id>
<content type='text'>
Set a message when we fail to lock.

Also make the put function void, since it's called from free, which
cannot report errors. The only errors we can experience here are
internal state corruption, so we assert that we are trying to put a
pack which we have previously got.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Set a message when we fail to lock.

Also make the put function void, since it's called from free, which
cannot report errors. The only errors we can experience here are
internal state corruption, so we assert that we are trying to put a
pack which we have previously got.
</pre>
</div>
</content>
</entry>
<entry>
<title>pack: free the new pack struct if we fail to insert</title>
<updated>2014-06-25T19:20:39+00:00</updated>
<author>
<name>Carlos Martín Nieto</name>
<email>cmn@dwim.me</email>
</author>
<published>2014-06-25T19:20:39+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/libgit2.git/commit/?id=5e0f47c3753c5ddd206ab3af6d2a231ad3da39c4'/>
<id>5e0f47c3753c5ddd206ab3af6d2a231ad3da39c4</id>
<content type='text'>
If we fail to insert the packfile in the map, make sure to free it.

This makes the free function only attempt to remove its mwindows from
the global list if we have opened the packfile to avoid accessing the
list unlocked.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
If we fail to insert the packfile in the map, make sure to free it.

This makes the free function only attempt to remove its mwindows from
the global list if we have opened the packfile to avoid accessing the
list unlocked.
</pre>
</div>
</content>
</entry>
<entry>
<title>Share packs across repository instances</title>
<updated>2014-06-23T19:50:36+00:00</updated>
<author>
<name>Carlos Martín Nieto</name>
<email>cmn@dwim.me</email>
</author>
<published>2014-06-18T15:13:12+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/libgit2.git/commit/?id=b3b66c57930358467395fc3a5bca87edefd25cf4'/>
<id>b3b66c57930358467395fc3a5bca87edefd25cf4</id>
<content type='text'>
Opening the same repository multiple times will currently open the same
file multiple times, as well as map the same region of the file multiple
times. This is not necessary, as the packfile data is immutable.

Instead of opening and closing packfiles directly, introduce an
indirection and allocate packfiles globally. This does mean locking on
each packfile open, but we already use this lock for the global mwindow
list so it doesn't introduce a new contention point.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Opening the same repository multiple times will currently open the same
file multiple times, as well as map the same region of the file multiple
times. This is not necessary, as the packfile data is immutable.

Instead of opening and closing packfiles directly, introduce an
indirection and allocate packfiles globally. This does mean locking on
each packfile open, but we already use this lock for the global mwindow
list so it doesn't introduce a new contention point.
</pre>
</div>
</content>
</entry>
<entry>
<title>Further threading fixes</title>
<updated>2013-04-22T14:52:07+00:00</updated>
<author>
<name>Russell Belfer</name>
<email>rb@github.com</email>
</author>
<published>2013-04-15T07:09:03+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/libgit2.git/commit/?id=536078688549ac3d50483eecdec5a8169d921927'/>
<id>536078688549ac3d50483eecdec5a8169d921927</id>
<content type='text'>
This builds on the earlier thread safety work to make it so that
setting the odb, index, refdb, or config for a repository is done
in a threadsafe manner with minimized locking time.  This is done
by adding a lock to the repository object and using it to guard
the assignment of the above listed pointers.  The lock is only
held to assign the pointer value.

This also contains some minor fixes to the other work with pack
files to reduce the time that locks are being held to and fix an
apparently memory leak.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This builds on the earlier thread safety work to make it so that
setting the odb, index, refdb, or config for a repository is done
in a threadsafe manner with minimized locking time.  This is done
by adding a lock to the repository object and using it to guard
the assignment of the above listed pointers.  The lock is only
held to assign the pointer value.

This also contains some minor fixes to the other work with pack
files to reduce the time that locks are being held to and fix an
apparently memory leak.
</pre>
</div>
</content>
</entry>
<entry>
<title>Several warnings detected by static code analyzer fixed</title>
<updated>2013-03-17T23:30:26+00:00</updated>
<author>
<name>Arkadiy Shapkin</name>
<email>ashapkin@artec-group.com</email>
</author>
<published>2013-03-17T00:46:46+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/libgit2.git/commit/?id=10c06114cbb1c384b7de3cca6d6601ee750f5178'/>
<id>10c06114cbb1c384b7de3cca6d6601ee750f5178</id>
<content type='text'>
Implicit type conversion argument of function to size_t type
Suspicious sequence of types castings: size_t -&gt; int -&gt; size_t
Consider reviewing the expression of the 'A = B == C' kind. The expression is calculated as following: 'A = (B == C)'
Unsigned type is never &lt; 0
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Implicit type conversion argument of function to size_t type
Suspicious sequence of types castings: size_t -&gt; int -&gt; size_t
Consider reviewing the expression of the 'A = B == C' kind. The expression is calculated as following: 'A = (B == C)'
Unsigned type is never &lt; 0
</pre>
</div>
</content>
</entry>
<entry>
<title>Global options setter</title>
<updated>2013-01-23T01:58:58+00:00</updated>
<author>
<name>Vicent Marti</name>
<email>tanoku@gmail.com</email>
</author>
<published>2013-01-23T01:58:58+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/libgit2.git/commit/?id=59853eff99f8e849d3223bb7154e263fa05a88ae'/>
<id>59853eff99f8e849d3223bb7154e263fa05a88ae</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>update copyrights</title>
<updated>2013-01-08T23:31:27+00:00</updated>
<author>
<name>Edward Thomson</name>
<email>ethomson@edwardthomson.com</email>
</author>
<published>2013-01-08T23:07:25+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/libgit2.git/commit/?id=359fc2d241ac407bdf9bf0d28715705f01ca6360'/>
<id>359fc2d241ac407bdf9bf0d28715705f01ca6360</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>git_mwindow_file_deregister() shouldn't return errors</title>
<updated>2013-01-06T02:27:24+00:00</updated>
<author>
<name>Scott J. Goldman</name>
<email>scottjg@github.com</email>
</author>
<published>2013-01-06T02:20:42+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/libgit2.git/commit/?id=f9b55bcb5f9fd8c41c74d4be58ebaad13aa9b7f3'/>
<id>f9b55bcb5f9fd8c41c74d4be58ebaad13aa9b7f3</id>
<content type='text'>
As a function that appears to only be called on error paths, I don't
think it makes sense for it to return an error, or clobber the global
giterr. Note that no existing callsites actually check the return
code.

In my own application, there are errors where the real error ends
up being hidden, as git_mwindow_file_deregister() clobbers the
global giterr. I'm not sure this error is even relevant?
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
As a function that appears to only be called on error paths, I don't
think it makes sense for it to return an error, or clobber the global
giterr. Note that no existing callsites actually check the return
code.

In my own application, there are errors where the real error ends
up being hidden, as git_mwindow_file_deregister() clobbers the
global giterr. I'm not sure this error is even relevant?
</pre>
</div>
</content>
</entry>
<entry>
<title>Always check the result of git_mutex_lock</title>
<updated>2012-12-09T10:31:39+00:00</updated>
<author>
<name>Justin Spahr-Summers</name>
<email>Justin.SpahrSummers@gmail.com</email>
</author>
<published>2012-12-09T10:31:39+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/libgit2.git/commit/?id=a35b3864583bd1c98334aa71bb4e4c217ace55aa'/>
<id>a35b3864583bd1c98334aa71bb4e4c217ace55aa</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
</feed>
