"My map worked on westfall but not on 1.24"

Frozenhelfir

set Gwypaas = Guhveepaws
Reaction score
56
Posting this because a lot of topics like this will probably appear. It seems that Blizzard has made yet another retarded mistake: http://www.wc3c.net/showpost.php?p=1096978&postcount=12

Sigh... my map has tons of these.

EDIT:
JASS:
function Callback takes nothing returns boolean
    if true then
        return true
    elseif true then
        return true
    endif
    return true
endfunction


This works, so if you have any functions like that in the post, all of your elseifs need to return something it seems.
 

jwallstone

New Member
Reaction score
33
The use of the keyword "return" is heavily controlled. The safest way to use it now is to have a local variable for storing the return value, then calling return only at the last line of the function.
 

woot

New Member
Reaction score
8
Hmm I don't get it .. what is the "return bug" .. that code looks pretty standard .. what about it is causing the error?
 

Frozenhelfir

set Gwypaas = Guhveepaws
Reaction score
56
Hmm I don't get it .. what is the "return bug" .. that code looks pretty standard .. what about it is causing the error?

Blizzard being retarded.

The return bug used to be:

function returns integer
return unit
return 0
endfunction

Stuff like that worked. Now they "fixed" it but made the "standard code" not work.
 

cleeezzz

The Undead Ranger.
Reaction score
268
>lol wow lame .. especially when newgen checks for such errors

newgen allows the return bug :D (or it did in 1.23)
 

woot

New Member
Reaction score
8
what? really?

newgen never allowed me to return a variable that wasn't the same return type as the function

or am I missing what the return bug is =\
 

cleeezzz

The Undead Ranger.
Reaction score
268
it was an exploit so it worked o_O (yea your logic is correct, it shouldn't work, but it did)
 

Romek

Super Moderator
Reaction score
963
How stupid.
Does:
JASS:
function H2I takes handle h returns integer
 return h
 call DoNothing()
 return 0
endfunction

...Still work?


JASS:
function F takes nothing returns boolean
    if true then
        return true
    elseif true then
    endif
    return true
endfunction

Fail.
 

cleeezzz

The Undead Ranger.
Reaction score
268
>romek

in some quick tests, it doesn't seem to work.

probably cuz the new detection is multiple returns.
 

BRUTAL

I'm working
Reaction score
118
i think he meant this
JASS:
function H2I takes handle h return integer
 return h
 call DoNothing()
 return 0
endfunction


wth is up with that boolean function anyways o_O it looks overlycomplicated :p
 

cleeezzz

The Undead Ranger.
Reaction score
268
>Wait wait wait, this thing doesn't work any more?
yes it does not work

neither does this

JASS:
function Hi takes integer i returns real
if i > 1 then
    return 5.
elseif i > 2 then
endif
return 2.
endfunction


it seems like if you have nothing in an elseif block, then it will bug because this works.

JASS:
function Hi takes integer i returns real
if i > 1 then
    return 5.
elseif i > 2 then
    return 6.
endif
return 2.
endfunction
 

Frozenhelfir

set Gwypaas = Guhveepaws
Reaction score
56
Try it, my wc3 got a fatal error just trying to host it, let alone start it:

JASS:
function Callback takes nothing returns boolean
    if true then
        return true
    elseif true then
        return true
    endif
    return true
endfunction


This appears to work...
 

Attachments

  • iftest.w3m
    15.9 KB · Views: 277

Tt112233

TH.net Regular
Reaction score
6
JASS:

function F takes nothing returns boolean
    if true then
        return true
    elseif true then
    endif
    return true
endfunction


Does this mean that if conditions is not to be used when using returns?
 

cleeezzz

The Undead Ranger.
Reaction score
268
maybe, people are saying to just use return once at the end of the function

k i think i know one cause

JASS:
function Hi takes integer i returns real
    local real r
    if i > 1 then
        return 5.
    elseif i > 5 then
        set r = 6.
    endif
    return 0.
endfunction


the above DOES NOT WORK. i believe if you use a return in the IF block, you MUST return something in the ELSEIF. THIS DOES NOT APPLY TO "ELSE" BLOCKS, only ELSEIF

JASS:
function Hi takes integer i returns real  // WORKS
    local real r
    if i > 1 then
        return 5.
    elseif i > 5 then
        set r = 6.
        return r
    endif
    return 0.
endfunction

JASS:
function Hi takes integer i returns real // WORKS
    local real r
    if i > 1 then
        set r = 5.
    elseif i > 5 then
        set r = 6.
    endif
    return 0.
endfunction


JASS:
function Hi takes integer i returns real // WORKS
    local real r
    if i > 1 then
        set r = 5.
    elseif i > 5 then
        set r = 6.
        return r
    endif
    return 0.
endfunction
 
General chit-chat
Help Users
  • No one is chatting at the moment.

      The Helper Discord

      Staff online

      Members online

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top