Subj : MsgBase first_msg property. To : deon From : Digital Man Date : Sun May 08 2022 17:17:13 Re: MsgBase first_msg property. By: deon to Digital Man on Mon May 09 2022 09:32 am > Re: MsgBase first_msg property. > By: Digital Man to deon on Sun May 08 2022 11:28 am > > > I would be adverse, yes, as static variables are shared among on threads > > (e.g. nodes) and if you opened 2 message bases, that variable would be > > stomped on by the second opened message base. That's not going to work. > > Ahh, OK, of course ... > > > The smb.status header is not cleared when the msgbase is closed. But > > that's sort of what I was proposing: it should be. Or at least > > js_msgbase_get() should return 'undefined' for those properties when the > > message base isn't open to let you know that you've done something > > unexpected. > > I guess I'm not understanding why it "should be". For me, it still provides > value when the message base is closed, and programatically I can know if > those values are current. The intention was that those properties would provide the current information. If the message base is closed, they can't do that. But since you have a use case for the most-recent (but not necessarily current) values and that was supported/provided by most of those properties already, I guess it's fine to just leave it as is, although that was an unintentional use case. > I probably could delay my closure of the msgbase until later (and I'll have > to if you do go down that route) - but hestitant too, as I am not sure what > other things may be locked out if I do and I'm too slow... Nothing's locked when a msgbase is open. > > I've added a proper caching of the last-read 'first_msg' value (caching > > it in the object's private data). I'll commit that now. Give it a try and > > let me know if it does what you were hoping for. > > Thanks, I was going for what you were doing but couldnt figure out how > first_msg would default to zero if the attribute was read and the msgbase > hadnt been opened yet. How are you getting that? This line zeroes-out the index structure (where the first message number is taken): memset(&idx,0,sizeof(idx)); If the call to smb_getfirstidx() fails, then the idx is just left as is (all zeroed-out). > I thought with c++ it could > get some random number (from the contents of the memory location that it's > pointer was pointing too...) hence why I tried static. > > Appreciate your help. No problem. -- digital man (rob) Sling Blade quote #14: Karl Childers: Some folks call it a sling blade, I call it a kaiser blade. Norco, CA WX: 67.5øF, 59.0% humidity, 7 mph ESE wind, 0.00 inches rain/24hrs --- SBBSecho 3.15-Linux * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705) .