summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorFichteFoll2020-05-21 14:27:57 +0200
committerFichteFoll2020-05-21 14:27:57 +0200
commita2d437812518c5193b48f5cb255482e905673b4a (patch)
treefdcb347340f4874950a95a5607eef407e5f2e839
parent31fb9d37ce99bca51ae2cacaeb026e9e509ec63a (diff)
downloadaur-a2d437812518c5193b48f5cb255482e905673b4a.tar.gz
Add patch to fix audio cache block cleanup
-rw-r--r--.SRCINFO9
-rw-r--r--.gitignore5
-rw-r--r--PKGBUILD24
-rw-r--r--fix_audio_cache.patch41
4 files changed, 67 insertions, 12 deletions
diff --git a/.SRCINFO b/.SRCINFO
index 52fab5385343..971612594bc6 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,7 +1,7 @@
pkgbase = aegisub-ttools-meson-git
pkgdesc = A general-purpose subtitle editor with ASS/SSA support (TypesettingTools fork, meson branch)
- pkgver = 3.2.2.r440.9ebfbf456
- pkgrel = 1
+ pkgver = 3.2.2.r441.8b0aaaf7e
+ pkgrel = 2
url = http://www.aegisub.org
arch = x86_64
license = GPL
@@ -12,8 +12,6 @@ pkgbase = aegisub-ttools-meson-git
makedepends = lua
makedepends = mesa
makedepends = meson
- depends = gcc-libs
- depends = glibc
depends = boost-libs
depends = fontconfig
depends = icu
@@ -28,8 +26,11 @@ pkgbase = aegisub-ttools-meson-git
depends = uchardet
provides = aegisub
conflicts = aegisub
+ conflicts = aegisub-git
source = aegisub-ttools::git+https://github.com/TypesettingTools/Aegisub.git#branch=meson
+ source = fix_audio_cache.patch
sha256sums = SKIP
+ sha256sums = 5771cca865098c69a7fe269c30999c84a3a0f90ed0b55c80ec8df61975702a93
pkgname = aegisub-ttools-meson-git
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 000000000000..ecdba67ebdb4
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,5 @@
+*.log
+src/
+pkg/
+*.pkg.tar*
+aegisub-ttools/
diff --git a/PKGBUILD b/PKGBUILD
index 6f58cdd41290..da4867b9a761 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -2,23 +2,31 @@
pkgname=aegisub-ttools-meson-git
_srcname=aegisub-ttools
-pkgver=3.2.2.r440.9ebfbf456
-pkgrel=1
+pkgver=3.2.2.r441.8b0aaaf7e
+pkgrel=2
pkgdesc='A general-purpose subtitle editor with ASS/SSA support (TypesettingTools fork, meson branch)'
arch=('x86_64')
url='http://www.aegisub.org'
license=('GPL' 'BSD')
-depends=('gcc-libs' 'glibc' 'boost-libs'
+depends=('boost-libs'
'fontconfig' 'icu' 'libgl' 'wxgtk3' 'zlib' 'libass.so'
# optional by the build system, but don't make much sense to exclude
'alsa-lib' 'libffms2.so' 'fftw' 'hunspell' 'uchardet'
+ # 'gcc-libs' 'glibc' # part of 'base'
# 'luajit' # Arch's luajit isn't compiled in 5.2 mode
- ) # I think it depends on something else here too, but not sure what
+ )
makedepends=('boost' 'git' 'intltool' 'lua' 'mesa' 'meson')
provides=('aegisub')
-conflicts=('aegisub')
-source=("$_srcname::git+https://github.com/TypesettingTools/Aegisub.git#branch=meson")
-sha256sums=('SKIP')
+conflicts=('aegisub' 'aegisub-git')
+source=("$_srcname::git+https://github.com/TypesettingTools/Aegisub.git#branch=meson"
+ "fix_audio_cache.patch")
+sha256sums=('SKIP'
+ '5771cca865098c69a7fe269c30999c84a3a0f90ed0b55c80ec8df61975702a93')
+
+# TODO check libiconv dep
+# "had to install libiconv manually though since it's not listed as a dependency
+# I believe it's an optional dependency
+# meson still configures with it"
pkgver() {
cd "$_srcname"
@@ -32,7 +40,7 @@ prepare() {
cd "$_srcname"
- #patch -p1 < ../fix_version.patch
+ patch -p1 < ../fix_audio_cache.patch
arch-meson builddir -Dportaudio=disabled -Dopenal=disabled
}
diff --git a/fix_audio_cache.patch b/fix_audio_cache.patch
new file mode 100644
index 000000000000..f91247d315c1
--- /dev/null
+++ b/fix_audio_cache.patch
@@ -0,0 +1,41 @@
+From 1c6999b33a1b66b46143266ba9f842a32e837484 Mon Sep 17 00:00:00 2001
+From: Myaamori <myaamori1993@gmail.com>
+Date: Thu, 21 May 2020 05:11:15 +0100
+Subject: [PATCH] Fix mutation while iterating corrupting linked list in
+ block_cache.h
+
+---
+ src/block_cache.h | 11 +++++++++--
+ 1 file changed, 9 insertions(+), 2 deletions(-)
+
+diff --git a/src/block_cache.h b/src/block_cache.h
+index f2ebfa261..4025dac11 100644
+--- a/src/block_cache.h
++++ b/src/block_cache.h
+@@ -91,7 +91,6 @@ class DataBlockCache {
+ size -= (ba.size() - std::count(ba.begin(), ba.end(), nullptr)) * factory.GetBlockSize();
+
+ ba.clear();
+- age.erase(mb.position);
+ }
+
+ public:
+@@ -150,8 +150,16 @@
+ }
+
+ // Remove old entries until we're under the max size
+- for (auto it = age.rbegin(); size > max_size && it != age.rend(); )
+- KillMacroBlock(**it++);
++ auto it = age.end();
++ while (size > max_size) {
++ if (it == age.begin())
++ break;
++ it--;
++ KillMacroBlock(**it);
++ }
++
++ while (it != age.end())
++ it = age.erase(it);
+ }
+
+ /// @brief Obtain a data block from the cache