GuildCheck

31 - Solution to 623 Error

Posting these here and on the Curse project page, not sure which one you check.

Determined the solution to the 623 error, I believe.  The problem is that ScanGuild() is called regardless of the delay you set, and that line attempts to concatenate a nil value (self:guild).  I don't know how to avoid the actual inability for the function GetGuildInfo to get the player's guild, but this solves the issue, by leaving the function early when it has bad data.  This is the diff file, with the 4 new lines (one of which is a debug line, without which this could be a single line).

--- ./GuildCheck.lua  2012-08-30 13:19:30.000000000 -0400
+++ /Applications/World of Warcraft/Interface/AddOns/GuildCheck/GuildCheck.lua  2012-10-15 14:52:49.000000000 -0400
@@ -619,6 +619,10 @@
         self.updatetime = time()
         
         if not self.guild then self.guild = GetGuildInfo("player") end
+        if not self.guild then
+            self:Debug("ScanGuild():No Guild String, bailing...")
+            return
+        end
         if not self.guildstring then
             self.guildstring = self.faction .. ":" .. self.guild
         end

User When Change
Jaxomuk Jan 12, 2014 at 15:44 UTC Changed status from New to Duplicate
Zeglar Oct 15, 2012 at 20:15 UTC Create

You must login to post a comment. Don't have an account? Register to get one!

  • 7 comments
  • Avatar of Brefin Brefin Jan 07, 2013 at 16:41 UTC - 0 likes

    Patch 2.4.2 seems to have some oddly included libraries. The TOC is interface version 40300. And the .tga is missing.

    Back on topic. The way this current patch works, is that if self.guild isn't ready yet, then the addon sets self.scanning to true and is thus never able to scan the guild for the rest of that session.

    If instead, you set self.scanning back to false, then this function will be called again in about 15 seconds by the underlying scanning of Lib-GuildCheck. Eventually self.guild should be true and everything should soldier on.

  • Avatar of Jaxomuk Jaxomuk Jan 07, 2013 at 14:26 UTC - 0 likes

    @Zeglar: Go

    Whoops, might have loaded the wrong one by mistake. Just noticed i had 2 folders marked v 2.41 and 2.4.1.

  • Avatar of Zeglar Zeglar Jan 04, 2013 at 02:24 UTC - 0 likes

    So close, and yet so far... looks like the changes in 2.4.1 didn't actually change guildcheck.lua, at least not in the ZIP file here at curseforge or on curse.com.

    Sorry :(

  • Avatar of Zeglar Zeglar Dec 24, 2012 at 06:09 UTC - 0 likes

    Sorry to tell you Jaxomuk, but the new 2.4.0 version does not fix the problem with the change from 10 to 20 seconds delay (I wasn't particularly surprised, since I had experimented with the same thing myself during the testing I did here).

    (FWIW, I had it fail on my 19th login to the game, and was able to reproduce it several times in a row afterwards.)

    I think if you want to fix this permanently, you'll need to implement either my suggestion above with or without roncli's addition below.

    Last edited Dec 24, 2012 by Zeglar
  • Avatar of roncli roncli Oct 19, 2012 at 00:48 UTC - 0 likes

    I also added the following before the return with no ill effects:

    self:ScheduleTimer("ShowChanges", tonumber(self:GetDelay())) self.scanning = false

    This lets it retry later.

  • Avatar of Jaxomuk Jaxomuk Oct 17, 2012 at 11:48 UTC - 0 likes

    @Zeglar: Go

    Thanks Zelgar will put it into next update and Thank you, ive been chasing it for over a year and tried many possible fixes, non of which worked.

  • Avatar of Zeglar Zeglar Oct 16, 2012 at 20:24 UTC - 0 likes

    Some background: I've had this error fairly consistently for the past year+.  I knew you had been working on a solution, and clearing a swatter error periodically on login did not bother me much.  It seems to happen to me about 10-15% of the time I login on a character, with no rhyme or reason to when it occurs.  About 2 months ago I got serious about tracking down how to fix this one, since it was just at the level of annoying.  I tried a lot of solutions, many of them trying to overcome the system not getting the guild information, most of them with poor results, and always tough to track down because of the inconsistencies with the error occurring.  After watching the debugging information several times, I realized where things were failing and the idea above came into being.  I have tested it *extensively*, and there is no harm; the next time ScanGuild() is called periodically (~15-20 seconds max), it handles the guild changes correctly.

    FWIW, this *could* be constructed as a:

    if self.guild then
     ... rest of function...
    end

    But readability is fairly compromised, so I went with this solution to be quicker and easier to read, plus it allows me to add a Debugging line.

    Last edited Oct 16, 2012 by Zeglar
  • 7 comments

Facts

Last updated
Jan 12, 2014
Reported
Oct 15, 2012
Status
Duplicate - This report duplicates an existing ticket.
Type
Enhancement - A change which is intended to better the project in some way
Priority
Medium - Normal priority.
Votes
1

Reported by

Possible assignees