Hello community,

here is the log from the commit of package mercurial for openSUSE:Factory 
checked in at 2014-01-13 12:03:10
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/mercurial (Old)
 and      /work/SRC/openSUSE:Factory/.mercurial.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "mercurial"

Changes:
--------
--- /work/SRC/openSUSE:Factory/mercurial/mercurial.changes      2013-12-16 
16:35:49.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.mercurial.new/mercurial.changes 2014-01-13 
12:03:11.000000000 +0100
@@ -1,0 +2,8 @@
+Thu Jan  9 15:07:08 UTC 2014 - w...@rosenauer.org
+
+- update to version 2.8.2
+  * fileset, revset: do not use global parser object for thread safety
+  * hgweb: avoid initialization race (issue3953)
+  * mpatch: rewrite pointer overflow checks
+
+-------------------------------------------------------------------

Old:
----
  mercurial-2.8.1.tar.gz

New:
----
  mercurial-2.8.2.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ mercurial.spec ++++++
--- /var/tmp/diff_new_pack.AW41pZ/_old  2014-01-13 12:03:12.000000000 +0100
+++ /var/tmp/diff_new_pack.AW41pZ/_new  2014-01-13 12:03:12.000000000 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package mercurial
 #
-# Copyright (c) 2013 SUSE LINUX Products GmbH, Nuernberg, Germany.
+# Copyright (c) 2014 SUSE LINUX Products GmbH, Nuernberg, Germany.
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -17,7 +17,7 @@
 
 
 Name:           mercurial
-Version:        2.8.1
+Version:        2.8.2
 Release:        0
 Summary:        Scalable Distributed SCM
 License:        GPL-2.0+

++++++ mercurial-2.8.1.tar.gz -> mercurial-2.8.2.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-2.8.1/.hgsigs new/mercurial-2.8.2/.hgsigs
--- old/mercurial-2.8.1/.hgsigs 2013-12-02 03:51:16.000000000 +0100
+++ new/mercurial-2.8.2/.hgsigs 2014-01-02 04:46:45.000000000 +0100
@@ -80,3 +80,4 @@
 e7fa36d2ad3a7944a52dca126458d6f482db3524 0 
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
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-2.8.1/.hgtags new/mercurial-2.8.2/.hgtags
--- old/mercurial-2.8.1/.hgtags 2013-12-02 03:51:16.000000000 +0100
+++ new/mercurial-2.8.2/.hgtags 2014-01-02 04:46:45.000000000 +0100
@@ -93,3 +93,4 @@
 e7fa36d2ad3a7944a52dca126458d6f482db3524 2.7.2
 1596f2d8f2421314b1ddead8f7d0c91009358994 2.8-rc
 d825e4025e39d1c39db943cdc89818abd0a87c27 2.8
+209e04a06467e2969c0cc6501335be0406d46ef0 2.8.1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-2.8.1/PKG-INFO new/mercurial-2.8.2/PKG-INFO
--- old/mercurial-2.8.1/PKG-INFO        2013-12-02 03:51:25.000000000 +0100
+++ new/mercurial-2.8.2/PKG-INFO        2014-01-02 04:46:53.000000000 +0100
@@ -1,6 +1,6 @@
 Metadata-Version: 1.1
 Name: mercurial
-Version: 2.8.1
+Version: 2.8.2
 Summary: Fast scalable distributed SCM (revision control, version control) 
system
 Home-page: http://mercurial.selenic.com/
 Author: Matt Mackall and many others
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-2.8.1/i18n/check-translation.py 
new/mercurial-2.8.2/i18n/check-translation.py
--- old/mercurial-2.8.1/i18n/check-translation.py       2013-12-02 
03:51:10.000000000 +0100
+++ new/mercurial-2.8.2/i18n/check-translation.py       2014-01-02 
04:46:39.000000000 +0100
@@ -122,6 +122,7 @@
     (options, args) = optparser.parse_args()
 
     if options.doctest:
+        import os
         if 'TERM' in os.environ:
             del os.environ['TERM']
         import doctest
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-2.8.1/i18n/ja.po 
new/mercurial-2.8.2/i18n/ja.po
--- old/mercurial-2.8.1/i18n/ja.po      2013-12-02 03:51:10.000000000 +0100
+++ new/mercurial-2.8.2/i18n/ja.po      2014-01-02 04:46:39.000000000 +0100
@@ -149,8 +149,8 @@
 msgstr ""
 "Project-Id-Version: Mercurial\n"
 "Report-Msgid-Bugs-To: <mercurial-de...@selenic.com>\n"
-"POT-Creation-Date: 2013-11-28 16:18+0900\n"
-"PO-Revision-Date: 2013-11-28 20:03+0900\n"
+"POT-Creation-Date: 2013-12-30 21:16+0900\n"
+"PO-Revision-Date: 2013-12-30 21:26+0900\n"
 "Last-Translator: Japanese translation team <mercurial...@googlegroups.com>\n"
 "Language-Team: Japanese\n"
 "Language: ja\n"
@@ -8023,7 +8023,7 @@
 "                  # 3 * refresh よりも小さい値の場合は、\n"
 "                  # この設定は無視されます。\n"
 "  refresh = 0.1 # 進捗率表示更新間隔の秒数\n"
-"  format = topic bar number estimate # format of the progress bar\n"
+"  format = topic bar number estimate # 進捗率表示の形式指定\n"
 "  width = <none> # 進捗率表示の最大カラム数\n"
 "                 # (width 設定と画面幅の小さい方が有効になります)\n"
 "  clear-complete = True # 実行完了時の進捗率表示クリアの有無\n"
@@ -10770,9 +10770,9 @@
 "    その他の非 0 終了コードは bad とみなされます。"
 
 msgid ""
-"      - start a bisection with known bad revision 12, and good revision 34::"
+"      - start a bisection with known bad revision 34, and good revision 12::"
 msgstr ""
-"      - 既知の bad なリビジョン 12 と good なリビジョン 34 から探索開始::"
+"      - 既知の bad なリビジョン 34 と good なリビジョン 12 から探索開始::"
 
 msgid ""
 "          hg bisect --bad 34\n"
@@ -10863,8 +10863,8 @@
 msgid "          hg log -r \"bisect(range)\""
 msgstr "          hg log -r \"bisect(range)\""
 
-msgid "      - with the graphlog extension, you can even get a nice graph::"
-msgstr "      - graphlog エクステンション有効時は、履歴ツリー表示も可能::"
+msgid "      - you can even get a nice graph::"
+msgstr "      - ASCII文字による履歴ツリー表示も可能::"
 
 msgid "          hg log --graph -r \"bisect(range)\""
 msgstr "          hg log --graph -r \"bisect(range)\""
@@ -17047,14 +17047,14 @@
 
 msgid ""
 "  [extensions]\n"
-"  # (the mq extension will get loaded from Mercurial's path)\n"
-"  mq =\n"
+"  # (the progress extension will get loaded from Mercurial's path)\n"
+"  progress =\n"
 "  # (this extension will get loaded from the file specified)\n"
 "  myfeature = ~/.hgext/myfeature.py"
 msgstr ""
 "  [extensions]\n"
-"  # (mq エクステンションは Mercurial 同梱のものが読み込まれます)\n"
-"  mq =\n"
+"  # (progress エクステンションは Mercurial 同梱のものが読み込まれます)\n"
+"  progress =\n"
 "  # (以下のエクステンションは指定のパスから読み込まれます)\n"
 "  myfeature = ~/.hgext/myfeature.py"
 
@@ -20264,15 +20264,15 @@
 "    system (DVCS) can be described as a directed acyclic graph (DAG),\n"
 "    consisting of nodes and edges, where nodes correspond to\n"
 "    changesets and edges imply a parent -> child relation. This graph\n"
-"    can be visualized by graphical tools such as :hg:`glog`\n"
-"    (graphlog). In Mercurial, the DAG is limited by the requirement\n"
-"    for children to have at most two parents."
+"    can be visualized by graphical tools such as :hg:`log --graph`. In\n"
+"    Mercurial, the DAG is limited by the requirement for children to\n"
+"    have at most two parents."
 msgstr ""
 "DAG\n"
 "    分散構成管理システム (DVCS) のリポジトリにおけるリビジョン群は、\n"
 "    リビジョンに相当するノード (node) と、 親〜子の関係に相当するエッジ\n"
 "    (edge) から成る、 非循環有向グラフ (directed acyclic graph:DAG)\n"
-"    として表すことができます。 このグラフは、 :hg:`glog` (graphlog)\n"
+"    として表すことができます。 このグラフは、 :hg:`log --graph`\n"
 "    などにより可視化できます。 各リビジョンは最大2つの親しか持てない、\n"
 "    というのが、 Mercurial の DAG における制約です。(※ 訳注:\n"
 "    多くのケースで DAG は 「履歴ツリー」 的なニュアンスで用いられるため、\n"
@@ -20363,10 +20363,10 @@
 
 msgid ""
 "Graph\n"
-"    See DAG and :hg:`help graphlog`."
+"    See DAG and :hg:`log --graph`."
 msgstr ""
 "Graph\n"
-"    DAG および :hg:`help graphlog` を参照してください。"
+"    用語集の DAG の項目および :hg:`log --graph` 出力を参照してください。"
 
 msgid ""
 "Head\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-2.8.1/mercurial/__version__.py 
new/mercurial-2.8.2/mercurial/__version__.py
--- old/mercurial-2.8.1/mercurial/__version__.py        2013-12-02 
03:51:23.000000000 +0100
+++ new/mercurial-2.8.2/mercurial/__version__.py        2014-01-02 
04:46:52.000000000 +0100
@@ -1,2 +1,2 @@
 # this file is autogenerated by setup.py
-version = "2.8.1"
+version = "2.8.2"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-2.8.1/mercurial/fileset.py 
new/mercurial-2.8.2/mercurial/fileset.py
--- old/mercurial-2.8.1/mercurial/fileset.py    2013-12-02 03:51:10.000000000 
+0100
+++ new/mercurial-2.8.2/mercurial/fileset.py    2014-01-02 04:46:39.000000000 
+0100
@@ -78,7 +78,9 @@
         pos += 1
     yield ('end', None, pos)
 
-parse = parser.parser(tokenize, elements).parse
+def parse(expr):
+    p = parser.parser(tokenize, elements)
+    return p.parse(expr)
 
 def getstring(x, err):
     if x and (x[0] == 'string' or x[0] == 'symbol'):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-2.8.1/mercurial/hgweb/hgweb_mod.py 
new/mercurial-2.8.2/mercurial/hgweb/hgweb_mod.py
--- old/mercurial-2.8.1/mercurial/hgweb/hgweb_mod.py    2013-12-02 
03:51:10.000000000 +0100
+++ new/mercurial-2.8.2/mercurial/hgweb/hgweb_mod.py    2014-01-02 
04:46:39.000000000 +0100
@@ -59,15 +59,16 @@
                 u = baseui.copy()
             else:
                 u = ui.ui()
-            self.repo = hg.repository(u, repo)
+            r = hg.repository(u, repo)
         else:
-            self.repo = repo
+            r = repo
 
-        self.repo = self._getview(self.repo)
-        self.repo.ui.setconfig('ui', 'report_untrusted', 'off')
-        self.repo.baseui.setconfig('ui', 'report_untrusted', 'off')
-        self.repo.ui.setconfig('ui', 'nontty', 'true')
-        self.repo.baseui.setconfig('ui', 'nontty', 'true')
+        r = self._getview(r)
+        r.ui.setconfig('ui', 'report_untrusted', 'off')
+        r.baseui.setconfig('ui', 'report_untrusted', 'off')
+        r.ui.setconfig('ui', 'nontty', 'true')
+        r.baseui.setconfig('ui', 'nontty', 'true')
+        self.repo = r
         hook.redirect(True)
         self.mtime = -1
         self.size = -1
@@ -94,7 +95,8 @@
                                        untrusted=untrusted)
 
     def _getview(self, repo):
-        viewconfig = self.config('web', 'view', 'served')
+        viewconfig = repo.ui.config('web', 'view', 'served',
+                                    untrusted=True)
         if viewconfig == 'all':
             return repo.unfiltered()
         elif viewconfig in repoview.filtertable:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-2.8.1/mercurial/mpatch.c 
new/mercurial-2.8.2/mercurial/mpatch.c
--- old/mercurial-2.8.1/mercurial/mpatch.c      2013-12-02 03:51:10.000000000 
+0100
+++ new/mercurial-2.8.2/mercurial/mpatch.c      2014-01-02 04:46:39.000000000 
+0100
@@ -202,7 +202,7 @@
 {
        struct flist *l;
        struct frag *lt;
-       const char *data = bin + 12, *end = bin + len;
+       int pos = 0;
 
        /* assume worst case size, we won't have many of these lists */
        l = lalloc(len / 12);
@@ -211,21 +211,18 @@
 
        lt = l->tail;
 
-       while (data <= end) {
-               lt->start = getbe32(bin);
-               lt->end = getbe32(bin + 4);
-               lt->len = getbe32(bin + 8);
+       while (pos >= 0 && pos < len) {
+               lt->start = getbe32(bin + pos);
+               lt->end = getbe32(bin + pos + 4);
+               lt->len = getbe32(bin + pos + 8);
                if (lt->start > lt->end)
                        break; /* sanity check */
-               bin = data + lt->len;
-               if (bin < data)
-                       break; /* big data + big (bogus) len can wrap around */
-               lt->data = data;
-               data = bin + 12;
+               lt->data = bin + pos + 12;
+               pos += 12 + lt->len;
                lt++;
        }
 
-       if (bin != end) {
+       if (pos != len) {
                if (!PyErr_Occurred())
                        PyErr_SetString(mpatch_Error, "patch cannot be 
decoded");
                lfree(l);
@@ -355,32 +352,26 @@
 static PyObject *
 patchedsize(PyObject *self, PyObject *args)
 {
-       long orig, start, end, len, outlen = 0, last = 0;
+       long orig, start, end, len, outlen = 0, last = 0, pos = 0;
        Py_ssize_t patchlen;
-       char *bin, *binend, *data;
+       char *bin;
 
        if (!PyArg_ParseTuple(args, "ls#", &orig, &bin, &patchlen))
                return NULL;
 
-       binend = bin + patchlen;
-       data = bin + 12;
-
-       while (data <= binend) {
-               start = getbe32(bin);
-               end = getbe32(bin + 4);
-               len = getbe32(bin + 8);
+       while (pos >= 0 && pos < patchlen) {
+               start = getbe32(bin + pos);
+               end = getbe32(bin + pos + 4);
+               len = getbe32(bin + pos + 8);
                if (start > end)
                        break; /* sanity check */
-               bin = data + len;
-               if (bin < data)
-                       break; /* big data + big (bogus) len can wrap around */
-               data = bin + 12;
+               pos += 12 + len;
                outlen += start - last;
                last = end;
                outlen += len;
        }
 
-       if (bin != binend) {
+       if (pos != patchlen) {
                if (!PyErr_Occurred())
                        PyErr_SetString(mpatch_Error, "patch cannot be 
decoded");
                return NULL;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-2.8.1/mercurial/parsers.c 
new/mercurial-2.8.2/mercurial/parsers.c
--- old/mercurial-2.8.1/mercurial/parsers.c     2013-12-02 03:51:10.000000000 
+0100
+++ new/mercurial-2.8.2/mercurial/parsers.c     2014-01-02 04:46:39.000000000 
+0100
@@ -155,10 +155,10 @@
 {
        PyObject *dmap, *cmap, *parents = NULL, *ret = NULL;
        PyObject *fname = NULL, *cname = NULL, *entry = NULL;
-       char state, *str, *cur, *end, *cpos;
+       char state, *cur, *str, *cpos;
        int mode, size, mtime;
        unsigned int flen;
-       int len;
+       int len, pos = 40;
 
        if (!PyArg_ParseTuple(args, "O!O!s#:parse_dirstate",
                              &PyDict_Type, &dmap,
@@ -175,18 +175,17 @@
                goto quit;
 
        /* read filenames */
-       cur = str + 40;
-       end = str + len;
-
-       while (cur < end - 17) {
+       while (pos >= 40 && pos < len) {
+               cur = str + pos;
                /* unpack header */
                state = *cur;
                mode = getbe32(cur + 1);
                size = getbe32(cur + 5);
                mtime = getbe32(cur + 9);
                flen = getbe32(cur + 13);
+               pos += 17;
                cur += 17;
-               if (cur + flen > end || cur + flen < cur) {
+               if (flen > len - pos || flen < 0) {
                        PyErr_SetString(PyExc_ValueError, "overflow in 
dirstate");
                        goto quit;
                }
@@ -212,10 +211,10 @@
                            PyDict_SetItem(dmap, fname, entry) == -1)
                                goto quit;
                }
-               cur += flen;
                Py_DECREF(fname);
                Py_DECREF(entry);
                fname = cname = entry = NULL;
+               pos += flen;
        }
 
        ret = parents;
@@ -1678,28 +1677,23 @@
 static long inline_scan(indexObject *self, const char **offsets)
 {
        const char *data = PyString_AS_STRING(self->data);
-       const char *end = data + PyString_GET_SIZE(self->data);
+       Py_ssize_t pos = 0;
+       Py_ssize_t end = PyString_GET_SIZE(self->data);
        long incr = v1_hdrsize;
        Py_ssize_t len = 0;
 
-       while (data + v1_hdrsize <= end) {
+       while (pos + v1_hdrsize <= end && pos >= 0) {
                uint32_t comp_len;
-               const char *old_data;
                /* 3rd element of header is length of compressed inline data */
-               comp_len = getbe32(data + 8);
+               comp_len = getbe32(data + pos + 8);
                incr = v1_hdrsize + comp_len;
-               if (incr < v1_hdrsize)
-                       break;
                if (offsets)
-                       offsets[len] = data;
+                       offsets[len] = data + pos;
                len++;
-               old_data = data;
-               data += incr;
-               if (data <= old_data)
-                       break;
+               pos += incr;
        }
 
-       if (data != end && data + v1_hdrsize != end) {
+       if (pos != end) {
                if (!PyErr_Occurred())
                        PyErr_SetString(PyExc_ValueError, "corrupt index file");
                return -1;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mercurial-2.8.1/mercurial/revset.py 
new/mercurial-2.8.2/mercurial/revset.py
--- old/mercurial-2.8.1/mercurial/revset.py     2013-12-02 03:51:10.000000000 
+0100
+++ new/mercurial-2.8.2/mercurial/revset.py     2014-01-02 04:46:39.000000000 
+0100
@@ -1880,7 +1880,9 @@
         aliases[alias.name] = alias
     return _expandaliases(aliases, tree, [], {})
 
-parse = parser.parser(tokenize, elements).parse
+def parse(spec):
+    p = parser.parser(tokenize, elements)
+    return p.parse(spec)
 
 def match(ui, spec):
     if not spec:

-- 
To unsubscribe, e-mail: opensuse-commit+unsubscr...@opensuse.org
For additional commands, e-mail: opensuse-commit+h...@opensuse.org

Reply via email to