towctrans_l: Always return a value from helper functions
touupper and toulower didn't return a value in all cases. Worse, this only broke Cygwin when building without optimization for debug purposes. Why GCC neglects to notice this is a mystery. While at it, fix formatting. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
This commit is contained in:
		| @@ -46,16 +46,31 @@ toulower (wint_t c) | ||||
|   const struct caseconv_entry * cce = | ||||
|     bisearch(c, caseconv_table, | ||||
|              sizeof(caseconv_table) / sizeof(*caseconv_table) - 1); | ||||
|  | ||||
|   if (cce) | ||||
|     switch (cce->mode) { | ||||
|       case TOLO: return c + cce->delta; | ||||
|       case TOBOTH: return c + 1; | ||||
|       case TO1: switch (cce->delta) { | ||||
|         case EVENCAP: if (!(c & 1)) return c + 1; break; | ||||
|         case ODDCAP: if (c & 1) return c + 1; break; | ||||
|     switch (cce->mode) | ||||
|       { | ||||
|       case TOLO: | ||||
| 	return c + cce->delta; | ||||
|       case TOBOTH: | ||||
| 	return c + 1; | ||||
|       case TO1: | ||||
| 	switch (cce->delta) | ||||
| 	  { | ||||
| 	    case EVENCAP: | ||||
| 	      if (!(c & 1)) | ||||
| 		return c + 1; | ||||
| 	      break; | ||||
| 	    case ODDCAP: | ||||
| 	      if (c & 1) | ||||
| 		return c + 1; | ||||
| 	      break; | ||||
| 	    default: | ||||
| 	      break; | ||||
| 	  } | ||||
| 	default: | ||||
| 	  break; | ||||
|       } | ||||
|   else | ||||
|   return c; | ||||
| } | ||||
|  | ||||
| @@ -65,16 +80,31 @@ touupper (wint_t c) | ||||
|   const struct caseconv_entry * cce = | ||||
|     bisearch(c, caseconv_table, | ||||
|              sizeof(caseconv_table) / sizeof(*caseconv_table) - 1); | ||||
|  | ||||
|   if (cce) | ||||
|     switch (cce->mode) { | ||||
|       case TOUP: return c + cce->delta; | ||||
|       case TOBOTH: return c - 1; | ||||
|       case TO1: switch (cce->delta) { | ||||
|         case EVENCAP: if (c & 1) return c - 1; break; | ||||
|         case ODDCAP: if (!(c & 1)) return c - 1; break; | ||||
|     switch (cce->mode) | ||||
|       { | ||||
|       case TOUP: | ||||
| 	return c + cce->delta; | ||||
|       case TOBOTH: | ||||
| 	return c - 1; | ||||
|       case TO1: | ||||
| 	switch (cce->delta) | ||||
| 	  { | ||||
| 	  case EVENCAP: | ||||
| 	    if (c & 1) | ||||
| 	      return c - 1; | ||||
| 	    break; | ||||
| 	  case ODDCAP: | ||||
| 	    if (!(c & 1)) | ||||
| 	      return c - 1; | ||||
| 	    break; | ||||
| 	  default: | ||||
| 	    break; | ||||
| 	  } | ||||
| 	default: | ||||
| 	  break; | ||||
|       } | ||||
|   else | ||||
|   return c; | ||||
| } | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user