File: binpac-5.patch

package info (click to toggle)
binpac 0.59.0-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, forky, sid, trixie
  • size: 1,168 kB
  • sloc: cpp: 10,806; yacc: 1,011; lex: 383; sh: 193; makefile: 35
file content (66 lines) | stat: -rw-r--r-- 2,167 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
diff -urN bro-1.2.1-orig/src/binpac/pac_paramtype.cc bro-1.2.1-ssl-binpac/src/binpac/pac_paramtype.cc
--- bro-1.2.1-orig/src/binpac/pac_paramtype.cc	2006-07-26 15:02:40.000000000 -0700
+++ bro-1.2.1-ssl-binpac/src/binpac/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/binpac/pac_type.cc bro-1.2.1-ssl-binpac/src/binpac/pac_type.cc
--- bro-1.2.1-orig/src/binpac/pac_type.cc	2006-07-26 15:02:40.000000000 -0700
+++ bro-1.2.1-ssl-binpac/src/binpac/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() )
 			{