[ale] found a bug in an open source API: It 'Broke' under linux.

James Sumners james.sumners at gmail.com
Sat Feb 12 17:35:54 EST 2011


I didn't say it is a syntax error. The purpose of enclosing the one
line in curly braces is to guard against future errors. For example:

if (1)
  foo();

could later become

if (1)
  foo();
  bar();

That _looks_ like

if (1) {
  foo();
  bar();

but it is really

if (1) {
  foo();
}
bar();

On Sat, Feb 12, 2011 at 4:06 PM, Joshua <jrtroberts at gmail.com> wrote:
> James,
>
> I put the {} around the block, (which helps to guard against certain
> bugs).  the {} make the code easier to read, but I do not know that with
> one line of code they prevent any bugs.
>
> from what I read, and the discussions I had on iirc, a dangling else is
> more of a grammatical (readability) thing, from a human perspective, the
> compiler /interpreter will take care of any ambiguity with if/else
> blocks, as far as I can tell.  The else attaches to the nearest if
> block.  I can see the issue from a psuedocode perspective, where the
> grammatical ambiguity can cause problems when actually implementing the
> code, but one the code is written it is the placement of the } from
> preceding if statements that determine which 'if' the 'else' will attach to.
>
> or am I missing something?
>
>
>
> Maybe that is all the dangling else is: a semantics things.
>
>
> James Sumners wrote:
>> My only suggestion would be to fix your dangling else block --
>> http://pastebin.com/pTzUQzjJ
>>
>> On Sat, Feb 12, 2011 at 2:53 PM, Joshua <jrtroberts at gmail.com> wrote:
>>
>>>  I am working with an API for currency conversion from
>>> http://www.thomasknierim.com/index.php?s=currencyconverter&Submit=Search
>>> <http://www.thomasknierim.com/index.php?s=currencyconverter&Submit=Search>
>>>
>>> It is all written is Java.
>>>
>>> The initCacheFile()  method worked fine under windows, but it broke
>>> under linux.
>>>
>>> The original code grabbed the path to the java temp directory and then
>>> concatenated  a file name onto the end of it.   I do not know what it
>>> produces under windows, but my suspicion is that windows is something
>>> like </driveletter:\pathtotemp\/>  with the trailing '\' included.
>>>
>>> Under linux the call to return the temp directory returns '/tmp' and
>>> then the concatenating of '/filename/'  creates a file named
>>> /tmp/filename/ instead of /tmp//filename/  so the application was trying
>>> to write to / where it did not have permissions.  So I had to write a
>>> fix.  Still not sure the fix is this best.
>>>
>>>
>>> Maybe someone can look at the code I wrote and let me know.
>>>
>>> http://pastebin.com/vsC6vZRU
>>>
>>> The old code is commented out.
>>>
>>> Joshua Roberts
>>>
>>
>>
>>
>
> _______________________________________________
> Ale mailing list
> Ale at ale.org
> http://mail.ale.org/mailman/listinfo/ale
> See JOBS, ANNOUNCE and SCHOOLS lists at
> http://mail.ale.org/mailman/listinfo
>



-- 
James Sumners
http://james.roomfullofmirrors.com/

"All governments suffer a recurring problem: Power attracts
pathological personalities. It is not that power corrupts but that it
is magnetic to the corruptible. Such people have a tendency to become
drunk on violence, a condition to which they are quickly addicted."

Missionaria Protectiva, Text QIV (decto)
CH:D 59



More information about the Ale mailing list