[ 
https://jira.codehaus.org/browse/MPMD-144?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Andreas Dangel updated MPMD-144:
--------------------------------

    Attachment: 0001-Close-the-fileoutputstream-in-the-finally-block-too..patch
    
> An incomplete fix for the resource leak bugs in PmdReport.java
> --------------------------------------------------------------
>
>                 Key: MPMD-144
>                 URL: https://jira.codehaus.org/browse/MPMD-144
>             Project: Maven 2.x PMD Plugin
>          Issue Type: Bug
>          Components: PMD
>    Affects Versions: 2.8
>            Reporter: Guangtai Liang
>            Priority: Critical
>         Attachments: 
> 0001-Close-the-fileoutputstream-in-the-finally-block-too..patch
>
>
> The fix revision 935344 was aimed to remove an resource leak bug on the 
> OutputStreamWriter object "writer" (created in line 323) in the method 
> "execute()" of the file 
> "/maven/plugins/trunk/maven-pmd-plugin/src/main/java/org/apache/maven/plugin/pmd/PmdReport.java"
>  , but it is incomplete. 
> There are some problems: 
> 1. when "writer" is not created successfully but the FileOutputStream object 
> "tStream" is created successfully at line 322,"tStream" will be leaked. 
> The best way to close such resource objects is putting such close operations 
> in the finaly block of a try-catch-finally structure.
> The problem still exists in the head revision. The buggy code is copied as 
> bellows: 
>        try
>         {
>             targetDirectory.mkdirs();
>             File targetFile = new File( targetDirectory, "pmd." + format );
> 357            FileOutputStream tStream = new FileOutputStream( targetFile );
> 358            writer = new OutputStreamWriter( tStream, getOutputEncoding() 
> );
>             r.setWriter( writer );
>             r.start();
>             r.renderFileReport( report );
>             r.end();
>             writer.close();
>             File siteDir = getReportOutputDirectory();
>             siteDir.mkdirs();
>             FileUtils.copyFile( targetFile, new File( siteDir, "pmd." + 
> format ) );
>         }
>         catch ( IOException ioe )
>         {
>             throw new MavenReportException( ioe.getMessage(), ioe );
>         }
>         finally
>         {
> 376           IOUtil.close( writer );
>         }

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://jira.codehaus.org/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to