some fixes

git-svn-id: https://asn1c.svn.sourceforge.net/svnroot/asn1c/trunk@1292 59561ff5-6e30-0410-9f3c-9617f08c8826
diff --git a/libasn1compiler/asn1c_internal.h b/libasn1compiler/asn1c_internal.h
index c37620c..fb8cc1e 100644
--- a/libasn1compiler/asn1c_internal.h
+++ b/libasn1compiler/asn1c_internal.h
@@ -24,15 +24,16 @@
 
 #ifdef	WIN32
 #include <io.h>
+#include <malloc.h>
+#include <fcntl.h>
 #define	open	_open
 #define	close	_close
-#define	alloca		_alloca
 #define	snprintf	_snprintf
 #define	vsnprintf	_vsnprintf
 #else
-#include <fcntl.h>		/* for open(2) */
 #include <glob.h>		/* for glob(3) */
 #endif
+#include <fcntl.h>		/* for open(2) */
 
 #ifdef	HAVE_SYS_PARAM_H
 #include <sys/param.h>	/* For MAXPATHLEN */
diff --git a/libasn1fix/asn1fix_param.c b/libasn1fix/asn1fix_param.c
index 6b3a629..f8e3a2e 100644
--- a/libasn1fix/asn1fix_param.c
+++ b/libasn1fix/asn1fix_param.c
@@ -50,8 +50,9 @@
 	rarg.lhs_params = expr->lhs_params;
 	rarg.rhs_pspecs = rhs_pspecs;
 	exc = asn1p_expr_clone_with_resolver(expr, resolve_expr, &rarg);
+	if(!exc) return NULL;
 	rpc = asn1p_expr_clone(rhs_pspecs, 0);
-	assert(exc && rpc);
+	assert(rpc);
 
 	/*
 	 * Create a new specialization.
@@ -137,6 +138,7 @@
 		expr->Identifier, expr->meta_type, expr->expr_type);
 	if(expr->meta_type == AMT_TYPE
 	|| expr->meta_type == AMT_VALUE
+	|| expr->meta_type == AMT_TYPEREF
 	|| expr->meta_type == AMT_VALUESET) {
 		DEBUG("Target is a simple type %s",
 			ASN_EXPR_TYPE2STR(expr->expr_type));
diff --git a/skeletons/constr_SEQUENCE.c b/skeletons/constr_SEQUENCE.c
index 5b57342..2b0ac3d 100644
--- a/skeletons/constr_SEQUENCE.c
+++ b/skeletons/constr_SEQUENCE.c
@@ -1078,7 +1078,7 @@
 	 * Get the sequence ROOT elements.
 	 */
 	for(edx = 0; edx < ((specs->ext_before < 0)
-			? td->elements_count : specs->ext_before + 1); edx++) {
+			? td->elements_count : specs->ext_before - 1); edx++) {
 		asn_TYPE_member_t *elm = &td->elements[edx];
 		void *memb_ptr;		/* Pointer to the member */
 		void **memb_ptr2;	/* Pointer to that pointer */
@@ -1219,7 +1219,7 @@
 	 * Get the sequence ROOT elements.
 	 */
 	for(edx = 0; edx < ((specs->ext_before < 0)
-			? td->elements_count : specs->ext_before + 1); edx++) {
+			? td->elements_count : specs->ext_before - 1); edx++) {
 		asn_TYPE_member_t *elm = &td->elements[edx];
 		void *memb_ptr;		/* Pointer to the member */
 		void **memb_ptr2;	/* Pointer to that pointer */