Well, i don't know much about it, but i suppose they're occasionally useful error messages.
Text Overflow Error
#352 posted by Krypto on 2012/05/11 21:39:55
I return once more :D
This time with a conundrum concerning one of my old favourite multiplayer mods - CoCoT's infamous 'Ultimate Quad Capture 1.4'! It can be found at Mod Database as the current new site is being renovated.
When accessing the menu to configure game settings, Quakespasm displays a repeat error message in the top left hand corner and some of the text gets cut off in the menu.
http://i.imgur.com/mCw0G.jpg
In the example screenshot, 10 game modes are meant to be displayed yet only 8 appear. You can still select the 10 with the appropriate key but their isn't any indication at all.
I never had this problem in Fitzquake, could it be a corrupt/odd config file?
Many thanks!
#353 posted by necros on 2012/05/11 22:23:37
that also happens in the menus in my rpg mod. same error message and not all the centerprint text is displayed.
#354 posted by necros on 2012/05/11 22:24:15
it's using the overloaded centerprint builtin, if that's any help.
Well
#355 posted by Preach on 2012/05/12 00:00:52
I suspect that you won't be very happy with the answer, but the problem is that there's been an overflow in the function PF_Varsting.
what?
Oh, fine then. In the regular quake code PF_Varstring uses a standard c function called strcat to combine the list of strings passed to centerprint into a buffer. strcat is a a very classic c function, and so offers no error protection. If you give it strings which are too long then it will happily overflow the buffer with them.
The standard engine code has a buffer which can hold 255 characters, but just blindly assumes that you wouldn't pass it strings that combine to a higher character count. Evidently the menu in CoCoT's mod exceeds this limit. In regular engines this overflows the buffer, which works as far as the menu is concerned but might overwrite something important in memory.
Evidently Quakespasm uses a safer function for combining strings or does some extra manual checks. The upshot is that your string gets truncated, as the error message has told you. It's hard to fault Quakespasm for fixing a bug that could potentially crash the program.
I suppose that Quakespasm could increase the size of the buffer somewhat to accomodate the mod (which has evidently been getting away with breaking the rules in other engines). It does seem best to recommend that you don't pass more than 255 characters total into centerprint, lest one day it causes memory corruption or a general protection fault.
#356 posted by necros on 2012/05/12 00:20:08
interesting that is actually a bug. also interesting, i tested the rpg mod quite extensively in FQ and never once experienced a crash or any kind of memory corruption.
#357 posted by szo on 2012/05/12 10:50:15
FQ might not have crashed because of the way the compiler used to make it into an exe reserved the static buffer used in PF_VarString(). Different brand of compilers and even different versions of the same compiler has every right to adjust such things to their liking. So, FQ never crashed is *purely* by luck. What we do in qs is not trusting our level of luck.
#358 posted by necros on 2012/05/12 15:52:30
does this have anything to do with needing to use -zone 2048 to prevent crashes? i recall someone on inside3d mentioning that quakespasm allocates strings differently than other engines.
#359 posted by szo on 2012/05/12 16:29:21
No, nothing related to -zone, at all.
Adding Features
#360 posted by Bluntz on 2012/05/14 23:25:12
Can I request that IPlog be added for Identify please.
It would be swell to know who I am playing against.
#361 posted by Spirit on 2012/05/15 07:35:12
look at their nick name, anything else is creepy. people should have a right to anonymity through pseudonyms.
Re: Text Overflow Error
#362 posted by svdijk on 2012/05/15 16:47:37
PF_VarString's buffer has been increased somewhat in the svn repo, fixing UQC's menu.
QS : Any New Version Soon ?
#363 posted by Barnak on 2012/06/04 17:23:48
Are there any news about a new version of QuakeSpasm on OS X ?
I'm looking for a full support for FSAA, Vertical sychro screen redraw, and the ability to put the game into background using Command-H (as in Quake3).
Hmmm - We need a new OS X dev. SleepwalkR and I are both busy with other things.
Support Features Please
#365 posted by Bluntz on 2012/07/02 15:38:56
Baker has a new Fitz build and I am hoping to get some of the improvements added for my Linux client.
"Oh yeah, remember your post about talk macros or view interpolations (shaky cam) ... ask for them to add SUPPORTS_TALK_MACROS, SUPPORTS_LEGIT_PING_SCOREBOARD, SUPPORTS_VIEW_ANGLES_INTERPOLATION."
I have had some help with the LOC file support now working.I hope there are more improvements you can use from baker's update though.
#366 posted by Spirit on 2012/07/02 16:50:15
step 1: share your own changes/work back to the community.
I never saw SUPPORTS_ flags before, is that new? where does that come from?
those examples look terribly named to my "alphabetical order should equal logical grouping" mind.
Spirit:
#367 posted by metlslime on 2012/07/02 18:47:53
That's just something baker added in the fitzquake mk. 5 source code to make his changes easier to find.
#368 posted by negke on 2012/07/05 10:04:55
What is this Bad "cue " chuck length (#) warning and why does it appear every time a map is loaded?
Bad "cue " Chuck Length
#369 posted by szo on 2012/07/05 10:33:54
When a *.wav file is parsed, it looks for the "cue " chunk, if it finds it then it progresses to find a loopstart position. A bad cue chunk in the file is a chunk that reports its size as negative or going past the whole size of the *.wav file. Without such checks I added there, the engine may very well segfault (i.e. crash, which was the case with, IIRC, arwop mod or something.)
The print is done only in developer mode so it doesn't appear in usual game play.
PF_VarString: Overflow
#370 posted by sock on 2012/07/16 21:47:36
Is there anyway to override the centerprint string truncation or suppress the PF_VarString: overflow console message?
Well
#371 posted by Preach on 2012/07/16 23:37:24
Even if there was it would be a bad idea to do it, because then your mod will potentially crash other engines by overflowing the buffer.
Fitz Compatibility
#372 posted by sock on 2012/07/16 23:43:41
This works fine with the original Fitz0.85 engine and the new mark V engine. I know a few people who want to use Quakespasm instead of Fitz, so I am asking if this problem could be tweaked via a console command. I don't expect the default to change, I just want the option to override the (new) default used in this engine so I can offer my mod to a wider audience.
PF_VarString: Overflow
#373 posted by mh on 2012/07/17 03:05:56
This is actually a bug fix kicking in. The buffer sizes for these functions could probably be increased but then you get into a war of attrition that I'm sure nobody wants.
String Overflow
#374 posted by sock on 2012/07/17 03:45:46
I do think this situation is sad because without a way to fix this string overflow issue (still don't understand why a startup command line can't be added to allow longer strings) my mod simply won't work with Quakespasm.
I am sure someone is going to say 'Why don't you change your mod?" well, I use the centerprint function as a method for telling my background story and I don't want to delete it after all the effort I have put into creating it.
Sock:
#375 posted by metlslime on 2012/07/17 04:23:45
is it possible to break the text into smaller chunks so players see a bit of it at a time?
I don't know what you're planning but that might work -- player walks along, sees some text, walks farther, hits another trigger that displays the next bit of text, etc. Or, it can all be triggered without the player moving, just on a delay for each section.
If none of those ideas work, you might be able to hijack the "end of episode" text mode, like maybe have a bsp that gives the player a rune and then ends immediately, causing the text to appear, then when the player hits enter it goes to your "real" bsp which has all the gameplay.
|