--
[ Picked text/plain from multipart/alternative ]
Thanks for the tip, but I implemented your sizeof(); suggestion :) It ain't
crashing anymore, but it's not displaying text weirdly enough. Debug is
still working :E

Well anyway I'll be rewriting it anyway :D I'm thinking of how I am gonna do
that. Do you think using an ::OnThink() function like most hud elements use
would be the best way? Possibly in the OnThink(); Check if pRules->foo has
changed. If it has call a function to change the size and text of the label?

And ::OnTick() There are only a couple of examples around the SDK and I was
trying to find the base function and I came across this in
vgui_BasePanel.cpp and found this:

void CBasePanel::OnTick( void )
{
    // Nothing
}

How is this function called within the engine? And what is it good for?

On 3/30/06, Alfred Reynolds <[EMAIL PROTECTED]> wrote:
>
> Debug mode has a lot more padding between memory allocations typically.
> This call:
> vgui::localize()->ConvertANSIToUnicode( sString, unicode, 1024)
>
> Would cause a random piece of memory 512 bytes beyond the end of
> "unicode" to be zero to 0 (null terminating the unicode string). In
> debug you were probably zeroing unused memory so it had no impact, in
> release you were smashing the stack or the like causing a crash. Moral
> is, use sizeof(<variable>) when passing in buffer length parameters,
> never hard code them :)
>
> - Alfred
>
> Benjamin Davison wrote:
> > --
> > [ Picked text/plain from multipart/alternative ]
> > Thanks Jay, I'll take those pointers away(rim shot) when I rewrite it
> > in
> > accordance with Alfred's suggestions.
> >
> > Still confusing that it worked in debug mode but displayed nothing in
> > release mode.
> >
> > On 3/30/06, Jay Stelly <[EMAIL PROTECTED]> wrote:
> >>
> >> Actually looking at the code you're using, you probably should just
> >> skip string_t entirely (since the unicode conversion takes a char *
> >> anyway):
> >>
> >> const char *pString = "";
> >>
> >> then replace sString with pString...
> >>
> >> Jay
> >>
> >>
> >>> -----Original Message-----
> >>> From: [EMAIL PROTECTED]
> >>> [mailto:[EMAIL PROTECTED] On Behalf Of Jay
> >>> Stelly Sent: Thursday, March 30, 2006 11:02 AM
> >>> To: hlcoders@list.valvesoftware.com
> >>> Subject: RE: [hlcoders] Works in debug mode, does not it release
> >>> mode.
> >>>
> >>> Unless someone has defined a valid assignment or conversion
> >>> path for this that I don't normally use you have to do this
> >>> to your constant
> >>> strings:
> >>>
> >>>>         sString = MAKE_STRING("Find the case!");
> >>>
> >>> at least that's why MAKE_STRING exists in the first place.
> >>>
> >>> It's not surprising that ConvertANSIToUnicode() would crash
> >>> if these assignments were producing an invalid pointer.
> >>>
> >>> Jay
> >>>
> >>>
> >>>> -----Original Message-----
> >>>> From: [EMAIL PROTECTED]
> >>>> [mailto:[EMAIL PROTECTED] On Behalf Of
> >>>> Benjamin Davison Sent: Thursday, March 30, 2006 10:50 AM
> >>>> To: hlcoders@list.valvesoftware.com
> >>>> Subject: [hlcoders] Works in debug mode, does not it release mode.
> >>>>
> >>>> --
> >>>> [ Picked text/plain from multipart/alternative ] Very weird indeed,
> >>>> I'm working on some VGUI code and for some reason it works in debug
> >>>> mode with the IDE attatched and fails to work in release mode, and
> >>>> for the life of me I am stumped for a soloution. Here is some code
> >>>> to see if you guys have run into this problem.
> >>>>
> >>>> void CBBHudTaskList::Paint( void )
> >>>> {
> >>>>     // getting a pointer to the game rules
> >>>>     CHL2MPRules *pRules = HL2MPRules();
> >>>>     if ( !pRules )
> >>>>         return;
> >>>>     // local player
> >>>>     C_BasePlayer *pPlayer = C_BasePlayer::GetLocalPlayer();     if
> >>>>         ( !pPlayer ) return;
> >>>>
> >>>>     string_t sString = "";
> >>>>     wchar_t unicode[256];
> >>>>
> >>>>     int x, y;
> >>>>     int textSizeWide, textSizeTall;
> >>>>     int iShown = 0; // number of lines shown
> >>>>     int fontTall = vgui::surface()->GetFontTall( m_hLargeFont );
> >>>> int border = 20;
> >>>>
> >>>>     x = border / 2; // ScreenWidth() - border - textSizeWide;
> >>>>     y = iShown * fontTall; // border + iShown * fontTall;
> >>>>
> >>>>     SetSize( 300 + border, 40 );
> >>>>
> >>>>
> >>>>     if (pRules->m_bCaptureObjectActive == true)
> >>>>     {
> >>>>         sString = "Find the case!";
> >>>>     }
> >>>>     else if (pRules->m_bCaptureZoneActivated == true)     {
> >>>>         sString = "Get to this location and do something";     }
> >>>>     else
> >>>>     {
> >>>>         sString = "No mission selected!";
> >>>>     }
> >>>>
> >>>>     vgui::localize()->ConvertANSIToUnicode( sString, unicode, 256);
> >>>>
> >>>>     // --- Set up default font and get character height for line
> >>>>     spacing vgui::surface()->DrawSetTextFont( m_hLargeFont );
> >>>>     //vgui::surface()->DrawSetTextFont( m_hLargeFont );
> >>>>     vgui::surface()->DrawSetTextPos(x, y);
> >>>>     vgui::surface()->DrawPrintText( unicode, wcslen(unicode) ); //
> >>>> print text
> >>>>
> >>>>     BaseClass::Paint();
> >>>> }
> >>>>
> >>>> Now for some reason vgui::localize()->ConvertANSIToUnicode(
> >>>> sString, unicode, 256); was crashing the release mode(not the
> >>>> debug) if I put the buffer to 1024
> >>>>
> >>>> Have any of you guys run into this problem? Or can you see some
> >>>> error I have overlooked?
> >>>>
> >>>> --
> >>>> - Benjamin Davison
> >>>> --
> >>>>
> >>>> _______________________________________________
> >>>> To unsubscribe, edit your list preferences, or view the list
> >>>> archives, please visit:
> >>>> http://list.valvesoftware.com/mailman/listinfo/hlcoders
> >>>>
> >>>>
> >>>
> >>> _______________________________________________
> >>> To unsubscribe, edit your list preferences, or view the list
> >>> archives, please visit:
> >>> http://list.valvesoftware.com/mailman/listinfo/hlcoders
> >>>
> >>>
> >>
> >> _______________________________________________
> >> To unsubscribe, edit your list preferences, or view the list
> >> archives, please visit:
> >> http://list.valvesoftware.com/mailman/listinfo/hlcoders
> >>
> >>
> >
> >
> > --
> > - Benjamin Davison
> > --
> >
> > _______________________________________________
> > To unsubscribe, edit your list preferences, or view the list
> > archives, please visit:
> > http://list.valvesoftware.com/mailman/listinfo/hlcoders
>
> _______________________________________________
> To unsubscribe, edit your list preferences, or view the list archives,
> please visit:
> http://list.valvesoftware.com/mailman/listinfo/hlcoders
>
>


--
- Benjamin Davison
--

_______________________________________________
To unsubscribe, edit your list preferences, or view the list archives, please 
visit:
http://list.valvesoftware.com/mailman/listinfo/hlcoders

Reply via email to