diff -urN bro-1.2.1-orig/src/pac_paramtype.cc bro-1.2.1-ssl-binpac/src/pac_paramtype.cc --- bro-1.2.1-orig/src/pac_paramtype.cc 2006-07-26 15:02:40.000000000 -0700 +++ bro-1.2.1-ssl-binpac/src/pac_paramtype.cc 2007-05-10 15:09:47.470104000 -0700 @@ -208,7 +208,13 @@ const char *parse_func; string parse_params; - if ( ref_type->incremental_input() ) + if ( buffer_mode() == BUFFER_NOTHING ) + { + ASSERT(!ref_type->incremental_input()); + parse_func = kParseFuncWithoutBuffer; + parse_params = "0, 0"; + } + else if ( ref_type->incremental_input() ) { parse_func = kParseFuncWithBuffer; parse_params = env->RValue(flow_buffer_id); @@ -239,15 +245,24 @@ if ( incremental_input() ) { - ASSERT(parsing_complete_var()); - out_cc->println("%s = %s;", - env->LValue(parsing_complete_var()), - call_parse_func.c_str()); - - // parsing_complete_var might have been already - // evaluated when set to false - if ( ! env->Evaluated(parsing_complete_var()) ) - env->SetEvaluated(parsing_complete_var()); + if ( buffer_mode() == BUFFER_NOTHING ) + { + out_cc->println("%s;", call_parse_func.c_str()); + out_cc->println("%s = true;", + env->LValue(parsing_complete_var())); + } + else + { + ASSERT(parsing_complete_var()); + out_cc->println("%s = %s;", + env->LValue(parsing_complete_var()), + call_parse_func.c_str()); + + // parsing_complete_var might have been already + // evaluated when set to false + if ( ! env->Evaluated(parsing_complete_var()) ) + env->SetEvaluated(parsing_complete_var()); + } } else { diff -urN bro-1.2.1-orig/src/pac_type.cc bro-1.2.1-ssl-binpac/src/pac_type.cc --- bro-1.2.1-orig/src/pac_type.cc 2006-07-26 15:02:40.000000000 -0700 +++ bro-1.2.1-ssl-binpac/src/pac_type.cc 2007-05-24 10:56:42.140658000 -0700 @@ -501,8 +501,8 @@ if ( buffer_mode() == BUFFER_NOTHING ) { - out_cc->println("%s = true;", - env->LValue(parsing_complete_var())); + // this is the empty type + DoGenParseCode(out_cc, env, data, flags); } else if ( buffer_input() ) {