changed awk to less sensitive about encoding when loading environment.
fixed a bug of setting encoding wrongly with --script-encoding in cmd/awk/awk.c
This commit is contained in:
		| @ -1914,16 +1914,16 @@ static int __build_environ ( | ||||
|  | ||||
| 			*eq = QSE_MT('\0'); | ||||
|  | ||||
| 			kptr = qse_mbstowcsdup (envarr[count], &klen, rtx->awk->mmgr);  | ||||
| 			vptr = qse_mbstowcsdup (eq + 1, QSE_NULL, rtx->awk->mmgr); | ||||
| 			/* mbstowcsdup() may fail for invalid encoding. as the environment  | ||||
| 			 * variaables are not under control, call mbstowcsalldup() instead  | ||||
| 			 * to go on despite encoding failure */ | ||||
| 			kptr = qse_mbstowcsalldup (envarr[count], &klen, rtx->awk->mmgr);  | ||||
| 			vptr = qse_mbstowcsalldup (eq + 1, QSE_NULL, rtx->awk->mmgr); | ||||
| 			if (kptr == QSE_NULL || vptr == QSE_NULL) | ||||
| 			{ | ||||
| 				if (kptr) QSE_MMGR_FREE (rtx->awk->mmgr, kptr); | ||||
| 				qse_awk_rtx_refdownval (rtx, v_env); | ||||
|  | ||||
| 				/* mbstowcsdup() may fail for invalid encoding. | ||||
| 				 * so setting the error code to ENOMEM may not | ||||
| 				 * be really accurate */ | ||||
| 				qse_awk_rtx_seterrnum (rtx, QSE_AWK_ENOMEM, QSE_NULL);  | ||||
| 				return -1; | ||||
| 			}			 | ||||
| @ -1942,9 +1942,6 @@ static int __build_environ ( | ||||
| 				if (kptr) QSE_MMGR_FREE (rtx->awk->mmgr, kptr); | ||||
| 				qse_awk_rtx_refdownval (rtx, v_env); | ||||
|  | ||||
| 				/* mbstowcsdup() may fail for invalid encoding. | ||||
| 				 * so setting the error code to ENOMEM may not | ||||
| 				 * be really accurate */ | ||||
| 				qse_awk_rtx_seterrnum (rtx, QSE_AWK_ENOMEM, QSE_NULL); | ||||
| 				return -1; | ||||
| 			}			 | ||||
|  | ||||
		Reference in New Issue
	
	Block a user