[ 
https://issues.apache.org/jira/browse/ZOOKEEPER-2628?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15645695#comment-15645695
 ] 

ASF GitHub Bot commented on ZOOKEEPER-2628:
-------------------------------------------

Github user hanm commented on a diff in the pull request:

    https://github.com/apache/zookeeper/pull/102#discussion_r86885871
  
    --- Diff: src/java/main/org/apache/jute/compiler/CGenerator.java ---
    @@ -61,70 +61,88 @@ void genCode() throws IOException {
                             + outputDirectory);
                 }
             }
    -        FileWriter c = new FileWriter(new File(outputDirectory, 
mName+".c"));
    -        FileWriter h = new FileWriter(new File(outputDirectory, 
mName+".h"));
     
    -        h.write("/**\n");
    -        h.write("* Licensed to the Apache Software Foundation (ASF) under 
one\n");
    -        h.write("* or more contributor license agreements.  See the NOTICE 
file\n");
    -        h.write("* distributed with this work for additional 
information\n");
    -        h.write("* regarding copyright ownership.  The ASF licenses this 
file\n");
    -        h.write("* to you under the Apache License, Version 2.0 (the\n");
    -        h.write("* \"License\"); you may not use this file except in 
compliance\n");
    -        h.write("* with the License.  You may obtain a copy of the License 
at\n");
    -        h.write("*\n");
    -        h.write("*     http://www.apache.org/licenses/LICENSE-2.0\n";);
    -        h.write("*\n");
    -        h.write("* Unless required by applicable law or agreed to in 
writing, software\n");
    -        h.write("* distributed under the License is distributed on an \"AS 
IS\" BASIS,\n");
    -        h.write("* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either 
express or implied.\n");
    -        h.write("* See the License for the specific language governing 
permissions and\n");
    -        h.write("* limitations under the License.\n");
    -        h.write("*/\n");
    -        h.write("\n");
    +        FileWriter c = null, h = null;
    +        try {
    +            c = new FileWriter(new File(outputDirectory, mName + ".c"));
    +            h = new FileWriter(new File(outputDirectory, mName + ".h"));
     
    -        c.write("/**\n");
    -        c.write("* Licensed to the Apache Software Foundation (ASF) under 
one\n");
    -        c.write("* or more contributor license agreements.  See the NOTICE 
file\n");
    -        c.write("* distributed with this work for additional 
information\n");
    -        c.write("* regarding copyright ownership.  The ASF licenses this 
file\n");
    -        c.write("* to you under the Apache License, Version 2.0 (the\n");
    -        c.write("* \"License\"); you may not use this file except in 
compliance\n");
    -        c.write("* with the License.  You may obtain a copy of the License 
at\n");
    -        c.write("*\n");
    -        c.write("*     http://www.apache.org/licenses/LICENSE-2.0\n";);
    -        c.write("*\n");
    -        c.write("* Unless required by applicable law or agreed to in 
writing, software\n");
    -        c.write("* distributed under the License is distributed on an \"AS 
IS\" BASIS,\n");
    -        c.write("* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either 
express or implied.\n");
    -        c.write("* See the License for the specific language governing 
permissions and\n");
    -        c.write("* limitations under the License.\n");
    -        c.write("*/\n");
    -        c.write("\n");
    +            h.write("/**\n");
    +            h.write("* Licensed to the Apache Software Foundation (ASF) 
under one\n");
    +            h.write("* or more contributor license agreements.  See the 
NOTICE file\n");
    +            h.write("* distributed with this work for additional 
information\n");
    +            h.write("* regarding copyright ownership.  The ASF licenses 
this file\n");
    +            h.write("* to you under the Apache License, Version 2.0 
(the\n");
    +            h.write("* \"License\"); you may not use this file except in 
compliance\n");
    +            h.write("* with the License.  You may obtain a copy of the 
License at\n");
    +            h.write("*\n");
    +            h.write("*     http://www.apache.org/licenses/LICENSE-2.0\n";);
    +            h.write("*\n");
    +            h.write("* Unless required by applicable law or agreed to in 
writing, software\n");
    +            h.write("* distributed under the License is distributed on an 
\"AS IS\" BASIS,\n");
    +            h.write("* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, 
either express or implied.\n");
    +            h.write("* See the License for the specific language governing 
permissions and\n");
    +            h.write("* limitations under the License.\n");
    +            h.write("*/\n");
    +            h.write("\n");
     
    -        h.write("#ifndef __"+mName.toUpperCase().replace('.','_')+"__\n");
    -        h.write("#define __"+mName.toUpperCase().replace('.','_')+"__\n");
    +            c.write("/**\n");
    +            c.write("* Licensed to the Apache Software Foundation (ASF) 
under one\n");
    +            c.write("* or more contributor license agreements.  See the 
NOTICE file\n");
    +            c.write("* distributed with this work for additional 
information\n");
    +            c.write("* regarding copyright ownership.  The ASF licenses 
this file\n");
    +            c.write("* to you under the Apache License, Version 2.0 
(the\n");
    +            c.write("* \"License\"); you may not use this file except in 
compliance\n");
    +            c.write("* with the License.  You may obtain a copy of the 
License at\n");
    +            c.write("*\n");
    +            c.write("*     http://www.apache.org/licenses/LICENSE-2.0\n";);
    +            c.write("*\n");
    +            c.write("* Unless required by applicable law or agreed to in 
writing, software\n");
    +            c.write("* distributed under the License is distributed on an 
\"AS IS\" BASIS,\n");
    +            c.write("* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, 
either express or implied.\n");
    +            c.write("* See the License for the specific language governing 
permissions and\n");
    +            c.write("* limitations under the License.\n");
    +            c.write("*/\n");
    +            c.write("\n");
     
    -        h.write("#include \"recordio.h\"\n");
    -        for (Iterator<JFile> i = mInclFiles.iterator(); i.hasNext();) {
    -            JFile f = i.next();
    -            h.write("#include \""+f.getName()+".h\"\n");
    -        }
    -        // required for compilation from C++
    -        h.write("\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n");
    +            h.write("#ifndef __" + mName.toUpperCase().replace('.', '_') + 
"__\n");
    +            h.write("#define __" + mName.toUpperCase().replace('.', '_') + 
"__\n");
     
    -        c.write("#include <stdlib.h>\n"); // need it for calloc() & free()
    -        c.write("#include \""+mName+".h\"\n\n");
    +            h.write("#include \"recordio.h\"\n");
    +            for (Iterator<JFile> i = mInclFiles.iterator(); i.hasNext(); ) 
{
    +                JFile f = i.next();
    +                h.write("#include \"" + f.getName() + ".h\"\n");
    +            }
    +            // required for compilation from C++
    +            h.write("\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n");
     
    -        for (Iterator<JRecord> i = mRecList.iterator(); i.hasNext();) {
    -            JRecord jr = i.next();
    -            jr.genCCode(h, c);
    -        }
    +            c.write("#include <stdlib.h>\n"); // need it for calloc() & 
free()
    +            c.write("#include \"" + mName + ".h\"\n\n");
     
    -        h.write("\n#ifdef __cplusplus\n}\n#endif\n\n");
    -        h.write("#endif //"+mName.toUpperCase().replace('.','_')+"__\n");
    +            for (Iterator<JRecord> i = mRecList.iterator(); i.hasNext(); ) 
{
    +                JRecord jr = i.next();
    +                jr.genCCode(h, c);
    +            }
     
    -        h.close();
    -        c.close();
    +            h.write("\n#ifdef __cplusplus\n}\n#endif\n\n");
    +            h.write("#endif //" + mName.toUpperCase().replace('.', '_') + 
"__\n");
    +        } catch (IOException e) {
    +            throw e;
    +        } finally {
    +            if (h != null) {
    +                try {
    +                    h.close();
    +                } catch (IOException ex) {
    +                    throw ex;
    +                } finally {
    +                    if (c != null) {
    +                        c.close();
    +                    }
    +                }
    +            }
    +            if (c != null) {
    --- End diff --
    
    It's sad that we have to close c twice (one here, one in the finally block 
earlier.). Findbugs is not happy if either of them is missing. It could be that 
the flow sensitive engine of findbug need an improvement.


> Investigate and fix findbug warnings
> ------------------------------------
>
>                 Key: ZOOKEEPER-2628
>                 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-2628
>             Project: ZooKeeper
>          Issue Type: Bug
>    Affects Versions: 3.5.2
>            Reporter: Michael Han
>             Fix For: 3.5.3
>
>
> Findbug tool used by Jenkins bot is upgraded to 3.0.1 from 2.0.3 according to 
> Infra team, and this leads to 20 new warnings produced by findbug. The 
> warning reports can be found on [pre commit 
> builds|https://builds.apache.org/job/PreCommit-ZOOKEEPER-Build/] with build 
> number >= 3513. These warnings need to be triaged and fixed if they are 
> legitimate.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to