Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package abcm2ps for openSUSE:Factory checked 
in at 2021-07-16 00:00:28
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/abcm2ps (Old)
 and      /work/SRC/openSUSE:Factory/.abcm2ps.new.2625 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "abcm2ps"

Fri Jul 16 00:00:28 2021 rev:14 rq:906396 version:8.14.12

Changes:
--------
--- /work/SRC/openSUSE:Factory/abcm2ps/abcm2ps.changes  2020-12-07 
15:01:38.672797816 +0100
+++ /work/SRC/openSUSE:Factory/.abcm2ps.new.2625/abcm2ps.changes        
2021-07-16 00:02:23.516705356 +0200
@@ -1,0 +2,32 @@
+Thu Jul 15 06:20:58 UTC 2021 - Michael Vetter <mvet...@suse.com>
+
+- Update to 8.14.12:
+  Fixes:
+  * crash when "%%break 1" and no measure bar in the tune
+  * crash when duplicated voice ending on %%staves with repeat variant
+  * crash when voice duplication with symbols without width
+  * crash or bad output when null value in %%scale
+  * problem when only bars in 2 voices followed %%staves of the second voice 
only
+  * crash when tuplet error in grace note sequence
+  * crash when grace note with empty tuplet
+  * crash when many broken rhythms after a single grace note
+  * access outside the deco array when error in U:
+  * crash when !xstem! with no note in the previous voice
+  * crash on tuplet without any note/rest
+  * crash when grace notes at end of line and voice overlay
+  * crash when !trem2! at start of a grace note sequence
+  * crash when wrong duration in 2 voice overlays and bad ties
+  * crash when accidental without a note at start of line after K:
+  * array overflow when wrong duration in voice overlay
+  * loss of left margin after first page since previous commit
+  * no respect of %%leftmargin with -E or -g
+  * bad placement of chord symbols when in a music line with only invisible 
rests
+  Syntax:
+  * Accept and remove one or two '%'s at start of all %%beginxxx lines
+  Generation:
+  * Move the CSS from XHTML to SVG
+  Build:
+  * configure: respect environment variable
+- Refresh compiler_flags.patch
+
+-------------------------------------------------------------------

Old:
----
  abcm2ps-8.14.11.tar.gz

New:
----
  abcm2ps-8.14.12.tar.gz

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

Other differences:
------------------
++++++ abcm2ps.spec ++++++
--- /var/tmp/diff_new_pack.SlUjES/_old  2021-07-16 00:02:23.952703811 +0200
+++ /var/tmp/diff_new_pack.SlUjES/_new  2021-07-16 00:02:23.956703798 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package abcm2ps
 #
-# Copyright (c) 2020 SUSE LLC
+# Copyright (c) 2021 SUSE LLC
 # Copyright (c) 2007 by Edgar Aichinger
 #
 # All modifications and additions to the file contributed by third parties
@@ -18,7 +18,7 @@
 
 
 Name:           abcm2ps
-Version:        8.14.11
+Version:        8.14.12
 Release:        0
 Summary:        A program to typeset abc tunes into Postscript
 License:        LGPL-3.0-or-later

++++++ abcm2ps-8.14.11.tar.gz -> abcm2ps-8.14.12.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/abcm2ps-8.14.11/abcparse.c 
new/abcm2ps-8.14.12/abcparse.c
--- old/abcm2ps-8.14.11/abcparse.c      2020-12-05 12:12:55.000000000 +0100
+++ new/abcm2ps-8.14.12/abcparse.c      2021-07-14 16:15:45.000000000 +0200
@@ -3,7 +3,7 @@
  *
  * This file is part of abcm2ps.
  *
- * Copyright (C) 1998-2020 Jean-Fran??ois Moine (http://moinejf.free.fr)
+ * Copyright (C) 1998-2021 Jean-Fran??ois Moine (http://moinejf.free.fr)
  * Adapted from abc2ps, Copyright (C) 1996-1998 Michael Methfessel
  *
  * This program is free software; you can redistribute it and/or modify it
@@ -2040,10 +2040,10 @@
                case CHAR_NOTE:
                        p = parse_note(p - 1, flags);
                        flags &= ABC_F_GRACE;
-                       parse.last_sym->u.note.slur_st = slur;
-                       slur = 0;
-                       if (parse.last_sym->u.note.notes[0].len > 0) /* if not 
space */
-                               curvoice->last_note = parse.last_sym;
+                       if (slur && parse.last_sym->u.note.notes[0].len) {
+                               parse.last_sym->u.note.slur_st = slur;
+                               slur = 0;
+                       }
                        break;
                case CHAR_SLASH:                /* '/' */
                        if (flags & ABC_F_GRACE)
@@ -2078,9 +2078,10 @@
                        if (p[1] != ':') {
                                p = parse_note(p - 1, flags); /* chord */
                                flags &= ABC_F_GRACE;
-                               parse.last_sym->u.note.slur_st = slur;
-                               slur = 0;
-                               curvoice->last_note = parse.last_sym;
+                               if (slur && 
parse.last_sym->u.note.notes[0].len) {
+                                       parse.last_sym->u.note.slur_st = slur;
+                                       slur = 0;
+                               }
                                break;
                        }
 
@@ -2271,7 +2272,6 @@
                        }
                        if (p[-1] == '<')
                                i = -i;
-                       broken_rhythm(curvoice->last_note, i);
                        curvoice->last_note->u.note.brhythm = i;
                        break;
                case CHAR_IGN:                  /* '*' & '`' */
@@ -2496,8 +2496,11 @@
 
 do_brhythm:
        if (curvoice->last_note
-        && curvoice->last_note->u.note.brhythm != 0)
+        && curvoice->last_note->u.note.brhythm != 0) {
+               broken_rhythm(curvoice->last_note,
+                               curvoice->last_note->u.note.brhythm);
                broken_rhythm(s, -curvoice->last_note->u.note.brhythm);
+       }
 add_deco:
        if (dc.n > 0) {
                memcpy(s->abc_type != ABC_T_MREST ? &s->u.note.dc
@@ -2511,6 +2514,8 @@
                syntax("Not a note in grace note sequence", p);
                goto err;
        }
+       if (s->u.note.notes[0].len > 0) /* if not space */
+               curvoice->last_note = s;
        return p;
 
 err:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/abcm2ps-8.14.11/buffer.c new/abcm2ps-8.14.12/buffer.c
--- old/abcm2ps-8.14.11/buffer.c        2020-12-05 12:12:55.000000000 +0100
+++ new/abcm2ps-8.14.12/buffer.c        2021-07-14 16:15:45.000000000 +0200
@@ -29,7 +29,7 @@
 static float ln_scale[BUFFLN]; /* scale of buffered lines */
 static signed char ln_font[BUFFLN];    /* font of buffered lines */
 static float cur_lmarg = 0;    /* current left margin */
-static float min_lmarg, max_rmarg;     /* margins for -E/-g */
+static float max_rmarg;                /* margins for -E/-g */
 static float cur_scale = 1.0;  /* current scale */
 static float maxy;             /* usable vertical space in page */
 static float remy;             /* remaining vertical space in page */
@@ -129,8 +129,7 @@
 /* (used only with eps -E and svg -g) */
 void marg_init(void)
 {
-       min_lmarg = cfmt.pagewidth;
-       max_rmarg = cfmt.pagewidth;
+       cur_lmarg = max_rmarg = 0;
 }
 
 /* -- initialize the postscript file (PS or EPS) -- */
@@ -141,11 +140,10 @@
        char version[] = "/creator [(abcm2ps) " VERSION "] def";
 
        if (epsf) {
-               cur_lmarg = min_lmarg - 10;
                fprintf(fout, "%%!PS-Adobe-2.0 EPSF-2.0\n"
                        "%%%%BoundingBox: 0 0 %.0f %.0f\n",
                        ((p_fmt->landscape ? p_fmt->pageheight : 
p_fmt->pagewidth)
-                               - cur_lmarg - max_rmarg + 10) * PPI_96_72,
+                               - cur_lmarg - max_rmarg) * PPI_96_72,
                        -bposy * PPI_96_72);
                marg_init();
        } else {
@@ -233,7 +231,6 @@
 /* -- initialize the svg file (option '-g') -- */
 static void init_svg(char *str)
 {
-       cur_lmarg = min_lmarg - 10;
        output = svg_output;
 #if 1 //fixme:test
        if (file_initialized > 0)
@@ -241,7 +238,7 @@
 #endif
        define_svg_symbols(str, nepsf,
                (p_fmt->landscape ? p_fmt->pageheight : p_fmt->pagewidth)
-                               - cur_lmarg - max_rmarg + 10,
+                               - cur_lmarg - max_rmarg,
                -bposy);
        file_initialized = 1;
        user_ps_write();
@@ -732,7 +729,6 @@
                close_fout();
        else
                file_initialized = 0;
-       cur_lmarg = 0;
        cur_scale = 1.0;
 }
 
@@ -937,12 +933,6 @@
        ln_buf[ln_num] = mbf;
        ln_pos[ln_num] = multicol_start == 0 ? bposy : 1;
        ln_lmarg[ln_num] = cfmt.leftmargin;
-       if (epsf) {
-               if (cfmt.leftmargin < min_lmarg)
-                       min_lmarg = cfmt.leftmargin;
-               if (cfmt.rightmargin < max_rmarg)
-                       max_rmarg = cfmt.rightmargin;
-       }
        ln_scale[ln_num] = cfmt.scale;
        ln_font[ln_num] = outft;
        ln_num++;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/abcm2ps-8.14.11/configure 
new/abcm2ps-8.14.12/configure
--- old/abcm2ps-8.14.11/configure       2020-12-05 12:12:55.000000000 +0100
+++ new/abcm2ps-8.14.12/configure       2021-07-14 16:15:45.000000000 +0200
@@ -1,17 +1,17 @@
 #! /bin/sh
 
 # (automatic update)
-VERSION=8.14.11
-VDATE=2020-12-05
+VERSION=8.14.12
+VDATE=2021-07-14
 
-CC=gcc
-PKG_CONFIG=pkg-config
-CFLAGS="-g -O2 -Wall -pipe"
+: "${CC:=gcc}"
+: "${PKG_CONFIG:=pkg-config}"
+CFLAGS="-g -O2 -Wall -pipe $CFLAGS"
 
 srcdir=.
-prefix=/usr/local
+: "${prefix=/usr/local}"
 
-INSTALL="/usr/bin/install -c"
+: "${INSTALL:=/usr/bin/install -c}"
 
 if test -f ./custom; then
        . ./custom
@@ -58,19 +58,13 @@
        DEFAULT_FDIR="$prefix/share/abcm2ps"
 fi
 
-if which $PKG_CONFIG > /dev/null ; then
-       if $PKG_CONFIG --exists freetype2 ; then
-               if $PKG_CONFIG --exists pangocairo ; then
-                       CPPFLAGS="$CPPFLAGS -DHAVE_PANGO=1 `$PKG_CONFIG pango 
cairo freetype2 --cflags`"
-                       LDLIBS="$LDLIBS `$PKG_CONFIG pangocairo pangoft2 
freetype2 --libs`"
-               else
-                       echo "pangocairo not found - no pango support"
-               fi
-       else
-               echo "freetype2 not found - no pango support"
-       fi
+if ! $PKG_CONFIG --exists freetype2 ; then
+       echo "pkg-config/freetype2 not found - no pango support"
+elif ! $PKG_CONFIG --exists pangocairo ; then
+       echo "pangocairo not found - no pango support"
 else
-       echo "pkg-config not found - no pango support"
+       CPPFLAGS="$CPPFLAGS -DHAVE_PANGO=1 `$PKG_CONFIG pango cairo freetype2 
--cflags`"
+       LDLIBS="`$PKG_CONFIG pangocairo pangoft2 freetype2 --libs` $LDLIBS"
 fi
 
 CPPFLAGS="$CPPFLAGS -I."
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/abcm2ps-8.14.11/deco.c new/abcm2ps-8.14.12/deco.c
--- old/abcm2ps-8.14.11/deco.c  2020-12-05 12:12:55.000000000 +0100
+++ new/abcm2ps-8.14.12/deco.c  2021-07-14 16:15:45.000000000 +0200
@@ -3,7 +3,7 @@
  *
  * This file is part of abcm2ps.
  *
- * Copyright (C) 2000-2019 Jean-Fran??ois Moine (http://moinejf.free.fr)
+ * Copyright (C) 2000-2021 Jean-Fran??ois Moine (http://moinejf.free.fr)
  *
  * This program is free software; you can redistribute it and/or modify it
  * under the terms of the GNU Lesser General Public License as published
@@ -1182,7 +1182,8 @@
                case 34:                /* trem1..trem4 */
                        if (s->abc_type != ABC_T_NOTE
                         || !prev
-                        || prev->abc_type != ABC_T_NOTE) {
+                        || prev->abc_type != ABC_T_NOTE
+                        || s->dur != prev->dur) {
                                error(1, s,
                                        "!%s! must be on the last of a couple 
of notes",
                                        dd->name);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/abcm2ps-8.14.11/draw.c new/abcm2ps-8.14.12/draw.c
--- old/abcm2ps-8.14.11/draw.c  2020-12-05 12:12:55.000000000 +0100
+++ new/abcm2ps-8.14.12/draw.c  2021-07-14 16:15:45.000000000 +0200
@@ -4389,7 +4389,8 @@
        y = 0;
        if (staff > nstaff) {
                staff--;                        /* one staff, empty */
-       } else {
+//     } else {
+       } {
                for (i = 0; i < YSTEP; i++) {
                        v = staff_tb[staff].top[i];
                        if (y < v)
@@ -4400,9 +4401,6 @@
        /* draw the parts and tempo indications if any */
        y += draw_partempo(staff, y);
 
-       if (empty[staff])
-               return y;
-
        y *= staff_tb[staff].staffscale;
        staffsep = cfmt.staffsep * 0.5 +
                        staff_tb[staff].topbar * staff_tb[staff].staffscale;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/abcm2ps-8.14.11/format.c new/abcm2ps-8.14.12/format.c
--- old/abcm2ps-8.14.11/format.c        2020-12-05 12:12:55.000000000 +0100
+++ new/abcm2ps-8.14.12/format.c        2021-07-14 16:15:45.000000000 +0200
@@ -1140,6 +1140,8 @@
                        f = strtod(p, &q);
                        if (*q != '\0' && *q != ' ')
                                goto bad;
+                       if (f < .1 || f > 10.)
+                               goto bad;
                        cfmt.scale = f / 0.75;          // old -> new scale
                        return;
                }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/abcm2ps-8.14.11/front.c new/abcm2ps-8.14.12/front.c
--- old/abcm2ps-8.14.11/front.c 2020-12-05 12:12:55.000000000 +0100
+++ new/abcm2ps-8.14.12/front.c 2021-07-14 16:15:45.000000000 +0200
@@ -582,13 +582,14 @@
                                        goto next_eol;
                                }
                        }
-                       if (strncmp("ps", (char *) begin_end, end_len) == 0) {
-                               if (*s == '%')
-                                       goto ignore;            /* comment */
-                       } else {
-                               if (*s == '%' && strchr(prefix, s[1])) {
-                                       s += 2;
-                                       l -= 2;
+
+                       // ignore '%' or '%%' at start of line
+                       if (*s == '%') {
+                               s++;
+                               l--;
+                               if (*s == '%') {
+                                       s++;
+                                       l--;
                                }
                        }
                        goto next;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/abcm2ps-8.14.11/music.c new/abcm2ps-8.14.12/music.c
--- old/abcm2ps-8.14.11/music.c 2020-12-05 12:12:55.000000000 +0100
+++ new/abcm2ps-8.14.12/music.c 2021-07-14 16:15:45.000000000 +0200
@@ -3,7 +3,7 @@
  *
  * This file is part of abcm2ps.
  *
- * Copyright (C) 1998-2019 Jean-Fran??ois Moine (http://moinejf.free.fr)
+ * Copyright (C) 1998-2021 Jean-Fran??ois Moine (http://moinejf.free.fr)
  * Adapted from abc2ps, Copyright (C) 1996-1998 Michael Methfessel
  *
  * This program is free software; you can redistribute it and/or modify it
@@ -1975,7 +1975,7 @@
                                break;
                        goto cut_here;
                }
-               if (s->extra) {
+               if (s->extra && s->type != GRACE) {
                        if (!extra)
                                extra = s;
                        else
@@ -2917,7 +2917,8 @@
                        if (u->ymn < stb[staff].st[i].ymn)
                                stb[staff].st[i].ymn = u->ymn;
                        if (u->sflags & S_XSTEM) {
-                               if (u->ts_prev->staff != staff - 1
+                               if (!u->ts_prev
+                                || u->ts_prev->staff != staff - 1
                                 || u->ts_prev->abc_type != ABC_T_NOTE) {
                                        error(1, s, "Bad !xstem!");
                                        u->sflags &= ~S_XSTEM;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/abcm2ps-8.14.11/parse.c new/abcm2ps-8.14.12/parse.c
--- old/abcm2ps-8.14.11/parse.c 2020-12-05 12:12:55.000000000 +0100
+++ new/abcm2ps-8.14.12/parse.c 2021-07-14 16:15:45.000000000 +0200
@@ -3,7 +3,7 @@
  *
  * This file is part of abcm2ps.
  *
- * Copyright (C) 1998-2020 Jean-Fran??ois Moine (http://moinejf.free.fr)
+ * Copyright (C) 1998-2021 Jean-Fran??ois Moine (http://moinejf.free.fr)
  * Adapted from abc2ps, Copyright (C) 1996-1998 Michael Methfessel
  *
  * This program is free software; you can redistribute it and/or modify it
@@ -214,7 +214,7 @@
        struct SYMBOL *s, *prev, *s2;
        struct VOICE_S *p_voice;
        int fl, voice, time, w, wmin, multi, mrest_time;
-       int nb, r, set_sy, new_sy;      // nv
+       int nb, r, r2, v2, set_sy, new_sy;      // nv
        struct SYMBOL *vtb[MAXVOICE];
        signed char vn[MAXVOICE];       /* voice indexed by range */
 
@@ -233,8 +233,7 @@
        for (;;) {
                if (set_sy) {
                    fl = 1;                     // start a new sequence
-//                 if (!new_sy) {
-                   if (1) {
+                   if (!new_sy) {
                        set_sy = 0;
                        multi = -1;
                        memset(vn, -1, sizeof vn);
@@ -354,7 +353,6 @@
                         || w_tb[s->type] != wmin)
                                continue;
                        if (s->type == STAVES) {        // change STAVES to a 
flag
-                               sy = sy->next;
                                set_sy = new_sy = 1;
                                if (s->prev)
                                        s->prev->next = s->next;
@@ -362,6 +360,20 @@
                                        voice_tb[voice].sym = s->next;
                                if (s->next)
                                        s->next->prev = s->prev;
+
+                               // set all voices of previous and next staff 
systems
+                               // as reachable
+                               for (r2 = 0; r2 < MAXVOICE; r2++) {
+                                       if (vn[r2] < 0)
+                                               break;
+                               }
+                               for (v2 = 0; v2 < MAXVOICE; v2++) {
+                                       if (sy->next->voice[v2].range < 0
+                                        || sy->voice[v2].range >= 0)
+                                               continue;
+                                       vn[r2++] = v2;
+                               }
+                               sy = sy->next;          // new staff system
                        } else {
                                if (fl) {
                                        fl = 0;
@@ -468,25 +480,6 @@
                                }
                                break;
 #endif
-                       case FMTCHG:
-                               s2 = s->extra;
-                               if (s2) {       /* dummy format */
-                                       if (!ns)
-                                               ns = s2;
-                                       if (s->prev) {
-                                               s->prev->next = s2;
-                                               s2->prev = s->prev;
-                                       }
-                                       if (!s->next) {
-                                               ns = NULL;
-                                               break;
-                                       }
-                                       while (s2->next)
-                                               s2 = s2->next;
-                                       s->next->prev = s2;
-                                       s2->next = s->next;
-                               }
-                               /* fall thru */
                        case TEMPO:
                        case PART:
                        case TUPLET:
@@ -554,8 +547,11 @@
                        }
                        if (!ns)
                                continue;
+                       s2 = s->extra;                  // old compression
                        s->extra = ns;
-                       s->prev->next = NULL;
+                       s->prev->next = s2;
+                       if (s2)
+                               s2->prev = s->prev;
                        s->prev = ns->prev;
                        if (s->prev)
                                s->prev->next = s;
@@ -717,6 +713,8 @@
                         && s2->time != 0)
                                break;
                }
+               if (!s2)
+                       return s2;
                if (s2->time < voice_tb[cursys->top_voice].meter.wmeasure)
                        s = s2;
                goto chk_time;
@@ -913,6 +911,8 @@
                                break;
 
                        /* move the clef */
+                       if (!s->next)
+                               break;
                        s->next->prev = s->prev;
                        s->prev->next = s->next;
                        s->ts_next->ts_prev = s->ts_prev;
@@ -2011,9 +2011,12 @@
                        error(1, s, "Erroneous end of voice overlap");
                        return;
                }
-               if (p_voice->time != over_mxtime)
-                       error(1, s, tx_wrong_dur);
                curvoice = &voice_tb[over_voice];
+               if (p_voice->time != over_mxtime) {
+                       error(1, s, tx_wrong_dur);
+                       if (p_voice->time > over_mxtime)
+                               curvoice->time = p_voice->time;
+               }
                over_mxtime = 0;
                over_voice = -1;
                over_time = -1;
@@ -2115,8 +2118,12 @@
        } else {
                if (over_mxtime == 0)
                        over_mxtime = p_voice->time;
-               else if (p_voice->time != over_mxtime)
+               else if (p_voice->time != over_mxtime) {
                        error(1, s, tx_wrong_dur);
+                       if (p_voice->time > over_mxtime)
+                               voice_tb[over_voice].time =
+                                       over_mxtime = p_voice->time;
+               }
        }
        p_voice2->time = over_time;
        curvoice = p_voice2;
@@ -2339,8 +2346,7 @@
                if (p_voice->sym)
                        flags = 1;
        }
-       if (flags == 0                  /* if first %%staves */
-        || (maxtime == 0 && staves_found < 0)) {
+       if (flags == 0) {                       /* if first %%staves */
                for (voice = 0; voice < MAXVOICE; voice++)
                        parsys->voice[voice].range = -1;
        } else {
@@ -3061,7 +3067,8 @@
                s = get_global_def(s);
                break;
        case 'U':
-               deco[s->u.user.symbol] = parse.deco_tb[s->u.user.value - 128];
+               if (s->u.user.value)    // if no error
+                       deco[s->u.user.symbol] = parse.deco_tb[s->u.user.value 
- 128];
                break;
        case 'u':
                break;
@@ -3623,6 +3630,8 @@
                        continue;
                case ABC_T_TUPLET:
                        set_tuplet(s);
+                       if (!s->type && (s->flags & ABC_F_GR_END))
+                               curvoice->last_sym->flags |= ABC_F_GR_END;
                        break;
                default:
                        continue;
@@ -6156,6 +6165,13 @@
 
        r = t->u.tuplet.r_plet;
        grace = t->flags & ABC_F_GRACE;
+       if (t->flags & ABC_F_GR_END) {
+               if (r != 1) {
+                       error(1, t, "Empty tuplet");
+                       return;
+               }
+               grace = 0;
+       }
 
        l = 0;
        for (s = t->abc_next; s; s = s->abc_next) {
@@ -6217,13 +6233,22 @@
                }
                if (s->u.note.notes[0].len == 0)        /* space ('y') */
                        continue;
-               if (grace ^ (s->flags & ABC_F_GRACE))
-                       continue;
+               if (grace) {
+                       if (!(s->flags & ABC_F_GRACE)) {
+                               error(1, t, "End of tuplet before end of grace 
sequence");
+                               return;
+                       }
+               } else if (s->flags & ABC_F_GRACE)
+                       continue;               // skip the grace note
                s1 = s;
                l += s->dur;
                if (--r <= 0)
                        break;
        }
+       if (!l) {
+               error(1, t, "No note in the tuplet");
+               return;
+       }
        if (!s) {
                error(1, t, "End of tune found inside a tuplet");
                return;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/abcm2ps-8.14.11/svg.c new/abcm2ps-8.14.12/svg.c
--- old/abcm2ps-8.14.11/svg.c   2020-12-05 12:12:55.000000000 +0100
+++ new/abcm2ps-8.14.12/svg.c   2021-07-14 16:15:45.000000000 +0200
@@ -1148,7 +1148,7 @@
                "<style type=\"text/css\">\n"
                ".fill {fill: currentColor}\n"
                ".stroke {stroke: currentColor; fill: none}\n"
-               "text{white-space: pre}\n";
+               "text{white-space:pre; fill:currentColor}\n";
        static const char svg_font_style[] =
                ".music {font:24px %s;\n"
                "       fill: currentColor}\n";
@@ -1203,7 +1203,6 @@
                        fprintf(fout,
                                "}\n"
                                "\t@page {margin: 0}\n"
-                               "\ttext {white-space: pre; fill:currentColor}\n"
                                "\tsvg {display: block}\n"
                                "</style>\n"
                                "<title>%s</title>\n"

++++++ compiler_flags.patch ++++++
--- /var/tmp/diff_new_pack.SlUjES/_old  2021-07-16 00:02:24.076703372 +0200
+++ /var/tmp/diff_new_pack.SlUjES/_new  2021-07-16 00:02:24.076703372 +0200
@@ -1,23 +1,23 @@
-diff -urEbw abcm2ps-8.14.7/configure abcm2ps-8.14.7.new/configure
---- abcm2ps-8.14.7/configure   2020-02-19 14:00:51.000000000 +0100
-+++ abcm2ps-8.14.7.new/configure       2020-02-19 14:37:35.365351023 +0100
+diff -urEbw abcm2ps-8.14.12/configure abcm2ps-8.14.12.new/configure
+--- abcm2ps-8.14.12/configure  2021-07-14 16:15:45.000000000 +0200
++++ abcm2ps-8.14.12.new/configure      2021-07-15 08:26:38.120364301 +0200
 @@ -6,7 +6,7 @@
  
- CC=gcc
- PKG_CONFIG=pkg-config
--CFLAGS="-g -O2 -Wall -pipe"
+ : "${CC:=gcc}"
+ : "${PKG_CONFIG:=pkg-config}"
+-CFLAGS="-g -O2 -Wall -pipe $CFLAGS"
 +CFLAGS="$RPM_OPT_FLAGS -pipe"
  
  srcdir=.
- prefix=/usr/local
-@@ -61,8 +61,8 @@
- if which $PKG_CONFIG > /dev/null ; then
-       if $PKG_CONFIG --exists freetype2 ; then
-               if $PKG_CONFIG --exists pangocairo ; then
--                      CPPFLAGS="$CPPFLAGS -DHAVE_PANGO=1 `$PKG_CONFIG pango 
cairo freetype2 --cflags`"
--                      LDLIBS="$LDLIBS `$PKG_CONFIG pangocairo pangoft2 
freetype2 --libs`"
-+                      CPPFLAGS="$CPPFLAGS -DHAVE_PANGO=1 `pkg-config pango 
cairo gobject-2.0 freetype2 --cflags`"
-+                      LDLIBS="$LDLIBS `pkg-config pangocairo pangoft2 
gobject-2.0 freetype2 --libs`"
-               else
-                       echo "pangocairo not found - no pango support"
-               fi
+ : "${prefix=/usr/local}"
+@@ -63,8 +63,8 @@
+ elif ! $PKG_CONFIG --exists pangocairo ; then
+       echo "pangocairo not found - no pango support"
+ else
+-      CPPFLAGS="$CPPFLAGS -DHAVE_PANGO=1 `$PKG_CONFIG pango cairo freetype2 
--cflags`"
+-      LDLIBS="`$PKG_CONFIG pangocairo pangoft2 freetype2 --libs` $LDLIBS"
++      CPPFLAGS="$CPPFLAGS -DHAVE_PANGO=1 `pkg-config pango cairo gobject-2.0 
freetype2 --cflags`"
++      LDLIBS="$LDLIBS `pkg-config pangocairo pangoft2 gobject-2.0 freetype2 
--libs`"
+ fi
+ 
+ CPPFLAGS="$CPPFLAGS -I."

Reply via email to