Re: Javascript weirdness
By: deon to Digital Man on Wed Apr 20 2022 09:16 pm
> Re: Javascript weirdness
> By: Digital Man to deon on Tue Apr 19 2022 10:15 pm
>
> > I'll continue to debug further, but my first suspect is that
> > get_all_msg_headers() method. Thanks for the report,
>
> No problem - glad you see it too :)
>
> BTW: Not sure if it is related, but is the result of get_all_msg_headers()
> supposed to be read-only?
>
> Originally I was iterating through through that result to update the
> messages, but I was noticing the following behaviour:
>
> * call get_all_msg_headers()
> * iterate through each item "for (hdr in hdrs)"
> * set hdr.tag to "foo"
> * pass hdr to put_msg_header();
>
> But the items were not updating.
>
> If, for example hdr.tag = "bar", if I had a writeln(hdr.tag) after setting
> it to "foo", it would report "foo". But if I JSON.stringify(hdr), the result
> shows that the tags field is still "bar".
>
> My workaround was to redo a call to "get_msg_header(hdr.number)" and use
> that result to update and pass back to put_msg_header(), but (IMHO) that is
> a waste calls (if get_all_msg_headers is not meant to be r/o)... I also
> tried JSON.parse(JSON.stringify(hdr)) that worked too.
>
> Not sure if that is related?
No, get_all_msg_headers() is not r/o.
Does put_msg_header() return false when you try to use it in that manner?
On the originally reported issue with Tags, I found:
- the issue still happens when using get_msg_header() instead
- the issue does not happen on Win32 builds
- the issue goes away when changing one line in js_msgbase.c, but it's clear
why
- LAZY_STRING_TRUNCSP_NULL("tags", p->msg.tags, JSPROP_ENUMERATE);
+ LAZY_STRING_TRUNCSP("tags", p->msg.tags, JSPROP_ENUMERATE);
still looking into it.
--
digital man (rob)
This Is Spinal Tap quote #14:
The Boston gig has been cancelled. [Don't] worry, it's not a big college town.
Norco, CA WX: 64.3°F, 61.0% humidity, 5 mph S wind, 0.00 inches rain/24hrs
---
■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
|