No it is not. When I'm adding "+1" and "+5", it simply adds that many number of 
characters to the size.

The sizeof(char) can be more than 1, and this statement at line 51 (filePath = 
new char[filePathSize]), takes care of allocating sufficient number of bytes, 
which accommodate "filePathSize" number of characters.

The problem is with memcpy and memset functions, which expect the size of the 
buffer to be provided in terms of bytes, which is why, we need the multiplier 
only in those functions.

 

Even I'm in favor of getting rid of them, but unfortunately I cannot 
std::string in this case, which would have vastly simplified the code, and 
avoided this manual calculation of sizes, but that results in compiler errors.

 

Thanks,

Krishna

 

From: Phil Race 
Sent: Thursday, March 28, 2019 3:11 AM
To: Krishna Addepalli <krishna.addepa...@oracle.com>; swing-dev@openjdk.java.net
Subject: Re: <Swing Dev> [13] RFR: JDK-8219914: Change the environment variable 
for Java Access Bridge logging to have a directory.

 

Hi,

It is still inconsistent. the "+1" and "+5" logic relies on the answer to 
sizeof(char) being 1.
So either get rid of all those calls or use sizeof('/') and sizeof(".logX"); 
instead of 1 and 5.

I'd get rid of them ....

-phil

On 3/27/19 1:41 AM, Krishna Addepalli wrote:

Hi Phil,

 

Thanks for the review.

I have changed the variable to "JAVA_ACCESSBRIDGE_LOGDIR".

 

Yes, '/' file separator character works on windows. I have used it in the past 
and have also currently tested it on my machine and it works.

 

I have added the multiplier "sizeof(char)" for all memcpy and memset lines in 
the code, to keep it consistent. Thanks for pointing that out.

 

Here is the link to the webrev: 
http://cr.openjdk.java.net/~kaddepalli/8219914/webrev01/

 

Thanks,

Krishna

 

From: Phil Race 
Sent: Tuesday, March 26, 2019 10:42 PM
To: Krishna Addepalli HYPERLINK 
"mailto:krishna.addepa...@oracle.com";<krishna.addepa...@oracle.com>; HYPERLINK 
"mailto:swing-dev@openjdk.java.net"swing-dev@openjdk.java.net
Subject: Re: <Swing Dev> [13] RFR: JDK-8219914: Change the environment variable 
for Java Access Bridge logging to have a directory.

 

Can we just call it  JAVA_ACCESSBRIDGE_LOGDIR ?
 
 
 filePath[envFilePathLength] = '/';
 
Is this right ? Does fopen on Windows expect this unix style separator ?
 
 
53         memcpy(filePath, envfilePath, envFilePathLength*sizeof(char));
 
56         memcpy(filePath + envFilePathLength + 1 + fileNameLength, ".log", 
4*sizeof(char));
 
Interesting that you feel it necessary to use sizeof(char) when clearly the 
whole logic, eg see :
 
 
 50         auto filePathSize = envFilePathLength + 1 + fileNameLength + 5; //1 
for "/", 5 for ".log" and 0;
 
assumes it is 1 ...
 
 PrintDebugString("couldnot open file %s", filePath);

couldnot -> could not

-phil.


On 3/26/19 2:45 AM, Krishna Addepalli wrote:

Hi Phil,

 

Per our discussion, I have changed the JAVA_ACCESSBRIDGE_LOGFILE to 
JAVA_ACCESSBRIDGE_LOGDIRECTORY to reflect that it accepts only a directory 
value in the variable.

I have also changed the code in AccessBridgeDebug.cpp appropriately. 

So, currently, the code will look for the environment variable, which should 
contain path to the directory, and two log files namely 
"java_access_bridge.log" and "windows_access_bridge.log" will be created.

 

Link to the JDK Issue: https://bugs.openjdk.java.net/browse/JDK-8219914

Here is the webrev: http://cr.openjdk.java.net/~kaddepalli/8219914/webrev00/

 

 

Thanks,

Krishna

 

 

Reply via email to