On 15.03.2016 21:12, Eugene Grosbein wrote:
> On 15.03.2016 21:09, Eugene Grosbein wrote:
>> On 15.03.2016 20:36, Golub Mikhail wrote:
>>> Есть и такой баг https://www.midnight-commander.org/ticket/3617
>>> В общем, жду исправлений.
>>> Спасибо.
>>
>> Я воспроизвел проблему и поковырял бинарник. Это похоже на баг в системном
>> gcc в девятке, он вставляет в код инструкцию "ud2a", которая призвана
>> гененировать SIGILL.
> 
> А ещё точнее, это вот что:
> 
> interface.c: In function 'mc_open':
> interface.c:203: warning: 'mode_t' is promoted to 'int' when passed through 
> '...'
> interface.c:203: warning: (so you should pass 'int' not 'mode_t' to 'va_arg')
> interface.c:203: note: if this code is reached, the program will abort
> interface.c:203: warning: will never be executed
> 
> Кривой код в свежем mc и кривое поведение компилятора.

Положить патч в /usr/ports/misc/mc/files/patch-interface.c и пересобрать
и проблема уходит.

--- lib/vfs/interface.c.orig    2016-03-12 22:45:47.000000000 +0700
+++ lib/vfs/interface.c 2016-03-15 21:17:26.383826000 +0700
@@ -200,7 +200,7 @@ mc_open (const vfs_path_t * vpath, int f
     {
         va_list ap;
         va_start (ap, flags);
-        mode = va_arg (ap, mode_t);
+        mode = va_arg (ap, int);
         va_end (ap);
     }
 


Ответить