Commit 7a1870d564cfd99e370117a6e13d7fa05f0cdcf0

Authored by Perry Werneck
1 parent 62f0b5fa

Fixing segfault when user press enter on a locked terminal.

Showing 1 changed file with 11 additions and 7 deletions   Show diff stats
src/lib3270/kybd.c
@@ -172,6 +172,7 @@ struct ta * new_ta(H3270 *hSession, enum _ta_type type) @@ -172,6 +172,7 @@ struct ta * new_ta(H3270 *hSession, enum _ta_type type)
172 // If typeahead disabled, complain and drop it. 172 // If typeahead disabled, complain and drop it.
173 if (!hSession->typeahead) 173 if (!hSession->typeahead)
174 { 174 {
  175 + lib3270_ring_bell(hSession);
175 lib3270_trace_event(hSession,"typeahead action dropped (no typeahead)\n"); 176 lib3270_trace_event(hSession,"typeahead action dropped (no typeahead)\n");
176 return NULL; 177 return NULL;
177 } 178 }
@@ -206,7 +207,7 @@ struct ta * new_ta(H3270 *hSession, enum _ta_type type) @@ -206,7 +207,7 @@ struct ta * new_ta(H3270 *hSession, enum _ta_type type)
206 { 207 {
207 struct ta *ta = new_ta(hSession, TA_TYPE_KEY_AID); 208 struct ta *ta = new_ta(hSession, TA_TYPE_KEY_AID);
208 209
209 - if(!ta) 210 + if(ta)
210 return; 211 return;
211 212
212 ta->args.aid_code = aid_code; 213 ta->args.aid_code = aid_code;
@@ -241,11 +242,13 @@ void enq_action(H3270 *hSession, int (*fn)(H3270 *)) @@ -241,11 +242,13 @@ void enq_action(H3270 *hSession, int (*fn)(H3270 *))
241 { 242 {
242 struct ta *ta = new_ta(hSession, TA_TYPE_ACTION); 243 struct ta *ta = new_ta(hSession, TA_TYPE_ACTION);
243 244
244 - ta->args.action = fn; 245 + if(!ta)
  246 + return;
245 247
  248 + ta->args.action = fn;
246 lib3270_trace_event(hSession,"single action queued (kybdlock 0x%x)\n", hSession->kybdlock); 249 lib3270_trace_event(hSession,"single action queued (kybdlock 0x%x)\n", hSession->kybdlock);
247 -}  
248 250
  251 +}
249 252
250 /** 253 /**
251 * @brief Execute an action from the typeahead queue. 254 * @brief Execute an action from the typeahead queue.
@@ -442,10 +445,11 @@ static void operator_error(H3270 *hSession, int error_type) @@ -442,10 +445,11 @@ static void operator_error(H3270 *hSession, int error_type)
442 } 445 }
443 } 446 }
444 447
445 -  
446 -/*  
447 - * Handle an AID (Attention IDentifier) key. This is the common stuff that  
448 - * gets executed for all AID keys (PFs, PAs, Clear and etc). 448 +/**
  449 + * @brief Handle an AID (Attention IDentifier) key.
  450 + *
  451 + * This is the common stuff that gets executed for all AID keys (PFs, PAs, Clear and etc).
  452 + *
449 */ 453 */
450 static void key_AID(H3270 *hSession, unsigned char aid_code) 454 static void key_AID(H3270 *hSession, unsigned char aid_code)
451 { 455 {