Improper placement of code in data_handler.c leads to increased time overhead
and memory leaks.
-----------------------------------------------------------------------------------------------
Key: AXIS2C-742
URL: https://issues.apache.org/jira/browse/AXIS2C-742
Project: Axis2-C
Issue Type: Bug
Components: xml/om
Environment: Ubuntu 7.10 (Gutsy Gibbon)
Reporter: Senaka Fernando
The code portion
struct stat stat_p;
if (-1 == stat(data_handler->file_name, &stat_p))
{
return AXIS2_FAILURE;
}
else if (stat_p.st_size == 0)
{
*output_stream = NULL;
*output_stream_size = 0;
return AXIS2_SUCCESS;
}
in axis2/c/axiom/src/attachments/data_handler.c (line 175) is repeatedly
executed and thus leads to increased time overhead.
Nevertheless, if the function is to return, resources occupied by byte_stream
is not freed, and thus leads to a memory leak.
I propose to move this portion of code out of the do-while loop.
Reasons:
* Evaluation of stat() just one time is enough as any other error that could
occur during reading the file is returned by the fread() and ferror()
combination.
* Therefore, repeated evaluation of a parameter that is technically not
supposed to change, is not worth it.
* Even it does change, that particular change may occur just after stat() was
evaluated, and thus makes the above argument base-less.
Thus, it seems to be the best option.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]