Re: coloured emojis and regional indicators kill gitk

2021-12-31 Thread Bruno Haible
Ben Pfaff wrote:
> FWIW, I don't see the crash here with
> git-gui version 0.21.0.99.gdf4f9e
> libXft-2.3.3-7.fc35.x86_64
> using Fedora Core 35.

Good to hear that the fix is being rolled out.

> I did get a funny message I've never seen before from "git fetch":
> $ git fetch
> remote: Counting objects: 19423, done.
> remote: warning: suboptimal pack - out of memory
> remote: Compressing objects: 100% (3819/3819), done.
> 
> I guess Savannah is running low on memory.

Savannah was moved to a new machine a week ago. [1]
If the problem persists, you might want to open a ticket at [2].

Bruno

[1] https://savannah.nongnu.org/support/?110588
[2] https://savannah.nongnu.org/support/?group=administration






Re: coloured emojis and regional indicators kill gitk

2021-12-31 Thread Ben Pfaff
On Fri, Dec 31, 2021 at 6:19 AM Bruno Haible  wrote:
> gitk crashes when displaying a specific commit in the gnulib git repo.
>
> How to reproduce:
> $ gitk
> Navigate to the commit 2995fb5e993a5d7434d96465758087b35a1488ac

Interesting. FWIW, I don't see the crash here with
git-gui version 0.21.0.99.gdf4f9e
libXft-2.3.3-7.fc35.x86_64
using Fedora Core 35.

I did get a funny message I've never seen before from "git fetch":
$ git fetch
remote: Counting objects: 19423, done.
remote: warning: suboptimal pack - out of memory
remote: Compressing objects: 100% (3819/3819), done.

I guess Savannah is running low on memory.



Re: Infinite recusion in test-timespec_getres.exe

2021-12-31 Thread Paul Eggert

On 12/31/21 04:56, Gisle Vanem wrote:

Paul Eggert wrote:


On 12/30/21 07:48, Gisle Vanem wrote:

-#elif defined HAVE_TIMESPEC_GETRES
+#elif defined HAVE_TIMESPEC_GETRES && HAVE_TIMESPEC_GETRES


This change has an effect only if there's the equivalent of '#define 
HAVE_TIMESPEC_GETRES 0' somewhere. 


Since 'time.in.h' says:
   #  if ! @HAVE_TIMESPEC_GETRES@
   _GL_FUNCDECL_SYS (timespec_getres, int, (struct timespec *ts, int base)
..

it makes sense to me this should be replaced with a '0' or '1'.


That would make sense, but it's not how it works. Although the shell 
variable and Makefile macro (which is what @HAVE_TIMESPEC_GETRES@ 
expands to) is either 0 or 1, the C preprocessor macro of the same name 
is either 1 or undefined. This is like most other HAVE_ symbols, e.g., 
HAVE_OPENAT.




Or you mean it should be replaced with
   defined HAVE_TIMESPEC_GETRES ?


I don't see why anything needs replacing.

Perhaps you configured or built with the compiler option 
'-DHAVE_TIMESPEC_GETRES=0'? If so, don't do that. On the other hand, if 
'./gnulib-tool --test timespec_getres' caused the stack overflow you 
mentioned, without any special compiler options, we need to figure out 
how the HAVE_TIMESPEC_GETRES preprocessor macro was incorrectly #defined 
to 0.




I fail to understand how the value of 'HAVE_TIMESPEC_GETRES'
is used by m4 etc.


gnulib-tool creates Makefile snippets that use HAVE_TIMESPEC_GETRES. The 
'time' module replaces @HAVE_TIMESPEC_GETRES@ with 
$(HAVE_TIMESPEC_GETRES) in these snippets. When you then run 
'configure', it replaces @HAVE_TIMESPEC_GETRES@ with 
$(HAVE_TIMESPEC_GETRES) in those snippets, and it also defines the 
Makefile HAVE_TIMESPEC_GETRES macro to be 1 or 0 in the generated 
Makefiles. 'configure' also arranges for '#define HAVE_TIMESPEC_GETRES 
1', or just a comment, to appear in config.h.


$ git grep HAVE_TIMESPEC_GETRES
lib/gettime-res.c:#elif defined HAVE_TIMESPEC_GETRES
lib/time.in.h:#  if ! @HAVE_TIMESPEC_GETRES@
m4/time_h.m4:  HAVE_TIMESPEC_GETRES=1; 
AC_SUBST([HAVE_TIMESPEC_GETRES])

m4/timespec_getres.m4:HAVE_TIMESPEC_GETRES=0
modules/time:	  -e 
's|@''HAVE_TIMESPEC_GETRES''@|$(HAVE_TIMESPEC_GETRES)|g' \

modules/timespec_getres:gettime-res [test $HAVE_TIMESPEC_GETRES = 0]
modules/timespec_getres:if test $HAVE_TIMESPEC_GETRES = 0; then



coloured emojis and regional indicators kill gitk

2021-12-31 Thread Bruno Haible
Hi,

gitk crashes when displaying a specific commit in the gnulib git repo.

How to reproduce:
$ gitk
Navigate to the commit 2995fb5e993a5d7434d96465758087b35a1488ac
(title "unilbrk: Update handling of zero-width joiner for Unicode 10.0.0.")
=>
X Error of failed request:  BadLength (poly request too large or internal Xlib 
length error)
  Major opcode of failed request:  139 (RENDER)
  Minor opcode of failed request:  20 (RenderAddGlyphs)
  Serial number of failed request:  12728
  Current serial number in output stream:  12796

This is a known bug in the Xft library [1][2].

I noticed that it also happens for "regional indicator" characters.
(Pairs of regional indicators render as a region's flag.)

Sorry, I did not know about this bug before checking in the commit.

Bruno

[1] https://unix.stackexchange.com/questions/629281/
[2] https://bugs.launchpad.net/ubuntu/+source/git/+bug/1852985






Re: Infinite recusion in test-timespec_getres.exe

2021-12-31 Thread Gisle Vanem

Paul Eggert wrote:


On 12/30/21 07:48, Gisle Vanem wrote:

-#elif defined HAVE_TIMESPEC_GETRES
+#elif defined HAVE_TIMESPEC_GETRES && HAVE_TIMESPEC_GETRES


This change has an effect only if there's the equivalent of '#define HAVE_TIMESPEC_GETRES 0' somewhere. 


Since 'time.in.h' says:
  #  if ! @HAVE_TIMESPEC_GETRES@
  _GL_FUNCDECL_SYS (timespec_getres, int, (struct timespec *ts, int base)
..

it makes sense to me this should be replaced with a '0' or '1'.
Or you mean it should be replaced with
  defined HAVE_TIMESPEC_GETRES ?

But I fail to understand how the value of 'HAVE_TIMESPEC_GETRES'
is used by m4 etc.

--
--gv



Re: Infinite recusion in test-timespec_getres.exe

2021-12-31 Thread Paul Eggert

On 12/30/21 07:48, Gisle Vanem wrote:

-#elif defined HAVE_TIMESPEC_GETRES
+#elif defined HAVE_TIMESPEC_GETRES && HAVE_TIMESPEC_GETRES


This change has an effect only if there's the equivalent of '#define 
HAVE_TIMESPEC_GETRES 0' somewhere. How did that happen? If your platform 
lacks timespec_getres, 'configure' is supposed to arrange for 
HAVE_TIMEPSEC_GETRES to not be #defined at all.