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 172 // If typeahead disabled, complain and drop it.
173 173 if (!hSession->typeahead)
174 174 {
  175 + lib3270_ring_bell(hSession);
175 176 lib3270_trace_event(hSession,"typeahead action dropped (no typeahead)\n");
176 177 return NULL;
177 178 }
... ... @@ -206,7 +207,7 @@ struct ta * new_ta(H3270 *hSession, enum _ta_type type)
206 207 {
207 208 struct ta *ta = new_ta(hSession, TA_TYPE_KEY_AID);
208 209  
209   - if(!ta)
  210 + if(ta)
210 211 return;
211 212  
212 213 ta->args.aid_code = aid_code;
... ... @@ -241,11 +242,13 @@ void enq_action(H3270 *hSession, int (*fn)(H3270 *))
241 242 {
242 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 249 lib3270_trace_event(hSession,"single action queued (kybdlock 0x%x)\n", hSession->kybdlock);
247   -}
248 250  
  251 +}
249 252  
250 253 /**
251 254 * @brief Execute an action from the typeahead queue.
... ... @@ -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 454 static void key_AID(H3270 *hSession, unsigned char aid_code)
451 455 {
... ...