Commit 9c6a3b1a authored by monty@hundin.mysql.fi's avatar monty@hundin.mysql.fi

Portability fix.

parent 510ce837
......@@ -39,6 +39,8 @@
static my_bool alarm_aborted=1;
my_bool thr_alarm_inited=0;
static sig_handler process_alarm_part2(int sig);
#if !defined(__WIN__) && !defined(__EMX__) && !defined(OS2)
static pthread_mutex_t LOCK_alarm;
......@@ -244,8 +246,6 @@ void thr_end_alarm(thr_alarm_t *alarmed)
sig_handler process_alarm(int sig __attribute__((unused)))
{
sigset_t old_mask;
ALARM *alarm_data;
/*
This must be first as we can't call DBUG inside an alarm for a normal thread
*/
......@@ -262,11 +262,33 @@ sig_handler process_alarm(int sig __attribute__((unused)))
return;
}
#endif
{
/*
We have to do do the handling of the alarm in a sub function,
because otherwise we would get problems with two threads calling
DBUG_... functions at the same time (as two threads may call
process_alarm() at the same time
*/
#ifndef USE_ALARM_THREAD
pthread_sigmask(SIG_SETMASK,&full_signal_set,&old_mask);
pthread_mutex_lock(&LOCK_alarm);
#endif
process_alarm_part2(sig);
#ifndef USE_ALARM_THREAD
#if defined(DONT_REMEMBER_SIGNAL) && !defined(USE_ONE_SIGNAL_HAND)
sigset(THR_SERVER_ALARM,process_alarm);
#endif
pthread_mutex_unlock(&LOCK_alarm);
pthread_sigmask(SIG_SETMASK,&old_mask,NULL);
#endif
return;
}
static sig_handler process_alarm_part2(int sig __attribute__((unused)))
{
ALARM *alarm_data;
DBUG_ENTER("process_alarm");
DBUG_PRINT("info",("sig: %d active alarms: %d",sig,alarm_queue.elements));
......@@ -333,15 +355,7 @@ sig_handler process_alarm(int sig __attribute__((unused)))
#endif
}
}
#ifndef USE_ALARM_THREAD
#if defined(DONT_REMEMBER_SIGNAL) && !defined(USE_ONE_SIGNAL_HAND)
sigset(THR_SERVER_ALARM,process_alarm);
#endif
pthread_mutex_unlock(&LOCK_alarm);
pthread_sigmask(SIG_SETMASK,&old_mask,NULL);
#endif
DBUG_VOID_RETURN;
}
}
......
......@@ -623,7 +623,7 @@ rl_redisplay ()
_rl_move_vert (linenum);
_rl_move_cursor_relative (0, tt);
_rl_clear_to_eol
((linenum == _rl_vis_botlin) ? strlen (tt) : screenwidth);
((linenum == _rl_vis_botlin) ? (int) strlen (tt) : screenwidth);
}
}
_rl_vis_botlin = inv_botlin;
......
......@@ -162,20 +162,24 @@ static my_bool net_realloc(NET *net, ulong length)
void net_clear(NET *net)
{
DBUG_ENTER("net_clear");
#if !defined(EXTRA_DEBUG) && !defined(EMBEDDED_LIBRARY)
{
int count; /* One may get 'unused' warn */
my_bool old_mode;
if (!vio_blocking(net->vio, FALSE, &old_mode))
{
while ( (count = vio_read(net->vio, (char*) (net->buff),
while ((count = vio_read(net->vio, (char*) (net->buff),
(uint32) net->max_packet)) > 0)
DBUG_PRINT("info",("skipped %d bytes from file: %s",
count,vio_description(net->vio)));
count, vio_description(net->vio)));
vio_blocking(net->vio, TRUE, &old_mode);
}
}
#endif /* EXTRA_DEBUG */
net->pkt_nr=net->compress_pkt_nr=0; /* Ready for new command */
net->write_pos=net->buff;
DBUG_VOID_RETURN;
}
/* Flush write_buffer if not empty. */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment