From 0eb26b254a06fc12f6896d128ebccf156b6fb88e Mon Sep 17 00:00:00 2001 From: Kio Watanabe Date: Thu, 11 Apr 2024 15:04:53 +0900 Subject: [PATCH 1/4] Fixed Java code generated by cobj --- cobj/codegen.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/cobj/codegen.c b/cobj/codegen.c index fed4409c..cdd31cf8 100644 --- a/cobj/codegen.c +++ b/cobj/codegen.c @@ -2693,17 +2693,22 @@ static void joutput_search_all(cb_tree table, cb_tree stmt, cb_tree cond, cb_tree when) { struct cb_field *p; cb_tree idx; + int occurs; p = cb_field(table); idx = CB_VALUE(p->index_list); + + if (p->occurs_depending) { + occurs = p->occurs_depending; + } else { + occurs = p->occurs_max; + } + /* Header */ joutput_indent("{"); joutput_line("int ret;"); - joutput_line("int head = %d - 1;", p->occurs_min); - joutput_prefix(); - joutput("int tail = "); - joutput_occurs(p); - joutput(" + 1;\n"); + joutput_line("int head = %d;", p->occurs_min - 1); + joutput_line("int tail = %d;", occurs + 1); /* Start loop */ joutput_line("for (;;)"); From 3ceb09d712458157dd645c4c29aa72fb3c4b7f29 Mon Sep 17 00:00:00 2001 From: Kio Watanabe Date: Thu, 11 Apr 2024 15:25:24 +0900 Subject: [PATCH 2/4] Fixed codegen.c --- cobj/codegen.c | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/cobj/codegen.c b/cobj/codegen.c index cdd31cf8..2ff61594 100644 --- a/cobj/codegen.c +++ b/cobj/codegen.c @@ -2697,12 +2697,7 @@ static void joutput_search_all(cb_tree table, cb_tree stmt, cb_tree cond, p = cb_field(table); idx = CB_VALUE(p->index_list); - - if (p->occurs_depending) { - occurs = p->occurs_depending; - } else { - occurs = p->occurs_max; - } + occurs = p->occurs_max; /* Header */ joutput_indent("{"); From d53b60e9f0d8580af1bdcfcec4add4bb645d827f Mon Sep 17 00:00:00 2001 From: Kio Watanabe Date: Thu, 11 Apr 2024 15:45:55 +0900 Subject: [PATCH 3/4] Fixed codegen.c --- cobj/codegen.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/cobj/codegen.c b/cobj/codegen.c index 2ff61594..e87769cd 100644 --- a/cobj/codegen.c +++ b/cobj/codegen.c @@ -2697,7 +2697,12 @@ static void joutput_search_all(cb_tree table, cb_tree stmt, cb_tree cond, p = cb_field(table); idx = CB_VALUE(p->index_list); - occurs = p->occurs_max; + + if (p->occurs_depending) { + occurs = CB_INTEGER(p->occurs_depending)->val; + } else { + occurs = p->occurs_max; + } /* Header */ joutput_indent("{"); From 57bf7489e7a59ccdf1c8ac4b1c69101f88b5be46 Mon Sep 17 00:00:00 2001 From: Kio Watanabe Date: Thu, 11 Apr 2024 17:15:44 +0900 Subject: [PATCH 4/4] Fixed codegen.c --- cobj/codegen.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/cobj/codegen.c b/cobj/codegen.c index e87769cd..0b25f42a 100644 --- a/cobj/codegen.c +++ b/cobj/codegen.c @@ -2693,22 +2693,22 @@ static void joutput_search_all(cb_tree table, cb_tree stmt, cb_tree cond, cb_tree when) { struct cb_field *p; cb_tree idx; - int occurs; p = cb_field(table); idx = CB_VALUE(p->index_list); - if (p->occurs_depending) { - occurs = CB_INTEGER(p->occurs_depending)->val; - } else { - occurs = p->occurs_max; - } - /* Header */ joutput_indent("{"); joutput_line("int ret;"); joutput_line("int head = %d;", p->occurs_min - 1); - joutput_line("int tail = %d;", occurs + 1); + joutput_prefix(); + joutput("int tail = "); + if (p->occurs_depending) { + joutput_integer(p->occurs_depending); + joutput(" + 1;\n"); + } else { + joutput("%d;\n", p->occurs_max + 1); + } /* Start loop */ joutput_line("for (;;)");