Skip to main content

Notice

Please note that most of the software linked on this forum is likely to be safe to use. If you are unsure, feel free to ask in the relevant topics, or send a private message to an administrator or moderator. To help curb the problems of false positives, or in the event that you do find actual malware, you can contribute through the article linked here.
Topic: Spider Monkey Panel (foo_spider_monkey_panel) (Read 341767 times) previous topic - next topic
0 Members and 1 Guest are viewing this topic.

Re: Spider Monkey Panel (foo_spider_monkey_panel)

Reply #900
v1.4.1-dev+0f2108d4

This is what happens when you edit the json file and carefully remove a property but the Json is still a valid file.

X

If the json gets corrupted (real corruption, not someone carefully deleting a property  ::) ), it crashes.
If you left a comma in the last key: value pair, it crashes.
If a value is missing but the key is present, it crashes.
etc.

So in fact, it always crashes when there is a real error (not a valid json).


X

Re: Spider Monkey Panel (foo_spider_monkey_panel)

Reply #901
already done all of that debug hence confirming it's actually the memory usage causing images failed to load as resmon shows fk2b memory usage quickly blows up to 2GB or more during the image loads and cliff back down to as if nothing was loaded after image loading&re-size finished. all images loaded fine while memory usage is blowing up, but intermittent images load failures started to show up when memory usage reached ~2GB. I had moved to async image loads to return control back to the main thread (FSM?) immediately and all images loaded just fine. as part of my change few days ago, I had already created a function to perform load+return the resized image to array.map over all image file paths, so an array of original image would never have existed. otherwise, I don't think I would even be able to reach this issue as out of memory popups&crash would have occurred way earlier
As MorderKLB correctly mentioned, GDI images are loaded in a special system memory area that is not displayed in usual RAM metrics. And said special area has a much lower memory limit. When said limit is reached, GDI methods start failing randomly and sometimes not really in traceable ways, e.g. image is not loaded but the loading method still returns ok status and reports no error (and that's why you saw promises completion).

I've yet to see SMP to fail GC unreachable objects. So, for GC to work you have to clear the variables that bind the corresponding images.

For example, you should not do this:
Code: [Select]
let images = LoadAllFullSizedImages(image_paths);
let resized_images = ResizeImages(images);

But rather:
Code: [Select]
let images;
for (path of image_paths) {
  let image = LoadImage(path);
  images.push_back(ResizeImage(path));
}

Re: Spider Monkey Panel (foo_spider_monkey_panel)

Reply #902
v1.4.1-dev+0f2108d4

This is what happens when you edit the json file and carefully remove a property but the Json is still a valid file.
Maybe it's a WINE thing or smth?

Here is what I get when using json from your post:
X

Re: Spider Monkey Panel (foo_spider_monkey_panel)

Reply #903
win 7. No wine.
 
Noticed it because unfortunately a shutdown did corrupt a package json at some point... took me some time to find the problem.
If you need more info, let me know. I can reliably crash it every time I apply any of the changes I wrote. No idea if it's a visual c++ version thing, win 7 related, or what.


 

Re: Spider Monkey Panel (foo_spider_monkey_panel)

Reply #905
Well I reproduced the crashes on windows 10 in artificial scenarios. fb2k 1.6. SMP 1.4.2-dev+06f421e8. Try closing foobar2000. Delete the author key and its value in package.json or rename package.json to packagee.json. Crashes when try & open foobar2000. I guess this is what regor is talking about. I tested with the bio package.json. Note if foobar2000 is open when you make the changes it'll likely save a valid file on restart & so may not crash. Crash dump below.

Not sure if this is the same crash as reported by Sergey77 for which I believe he sent you the crash dump.

Re: Spider Monkey Panel (foo_spider_monkey_panel)

Reply #906
Well I reproduced the crashes on windows 10 in artificial scenarios. fb2k 1.6. SMP 1.4.2-dev+06f421e8. Try closing foobar2000. Delete the author key and its value or rename package.json to packagee.json. Crashes when try & open foobar2000. I guess this is what regor is talking about. I tested with the bio package.json. Note if foobar2000 is open when you make the changes it'll likely save a valid file on restart & so may not crash. Crash dump below.

Not sure if this is the same crash as reported by Sergey77 for which I believe he sent you the crash dump.
Thanks for the dump! Yours is a different case from regor's though, since the one you have is a crash on startup.

Re: Spider Monkey Panel (foo_spider_monkey_panel)

Reply #907
Well I reproduced the crashes on windows 10 in artificial scenarios. fb2k 1.6. SMP 1.4.2-dev+06f421e8. Try closing foobar2000. Delete the author key and value or rename package.json to packagee.json. Crashes when try & open foobar2000. I guess this is what regor is talking about. I tested with the bio package.json. Note if foobar2000 is open when you make the changes it'll likely save a valid file on restart & so may not crash. Crash dump below.

Not sure if this is the same crash as reported by Sergey77 for which I believe he sent you the crash dump.
Ofc if you have the packaged loaded within foobar, the json gets rewritten while foobar is loaded (thus reverting the edit). You have to either restart or unload the package, edit the files, and then open the package manager again. And yes, mine happens when opening the package manager. Have not tried the startup case though.

This works with errors (no version)
Code: [Select]
{
  "author": "TheQwertiest",
  "description": "This is an example package that illustrates the package structure and basic features.",
  "enableDragDrop": false,
  "id": "{A584FDEF-C88A-4849-94D5-F33C71649927}",
  "name": "Example package",
  "shouldGrabFocus": true
}

Crash (missing value)
Code: [Select]
{
  "author": "TheQwertiest",
  "description": "This is an example package that illustrates the package structure and basic features.",
  "enableDragDrop": false,
  "id": "{A584FDEF-C88A-4849-94D5-F33C71649927}",
  "name": "Example package",
  "shouldGrabFocus":
}

Crash (comma at end)
Code: [Select]
{
  "author": "TheQwertiest",
  "description": "This is an example package that illustrates the package structure and basic features.",
  "enableDragDrop": false,
  "id": "{A584FDEF-C88A-4849-94D5-F33C71649927}",
  "name": "Example package",
  "shouldGrabFocus": true,
  "version": "1.0.0",
}

Crash (empty)
Code: [Select]

EDIT: Following WilB report

package.json -> packagee.json
Popup: (No crash)
Quote
Corrupted package: can't find `package.json`

package.json -> (empty file)
No Popup. SMP panel has been removed without notice. (not the script, the entire panel!)

Re: Spider Monkey Panel (foo_spider_monkey_panel)

Reply #908
@WilB reproduced and fixed on dev build.
@regor I do understand your scenario, I just can't reproduce it. Your issue was most likely fixed a long time ago. As marc2003 mentioned above, you are using a really old dev build (Feb 12 to be precise). Hence the bugs that I can't see.


Re: Spider Monkey Panel (foo_spider_monkey_panel)

Reply #910
Thanks, the crash seems fixed in the dev build.

Re: Spider Monkey Panel (foo_spider_monkey_panel)

Reply #911
Bug:

Try copying this into any property:
Code: [Select]
style,Psychedelic Folk;style,Latin Rock;style,Electropop;style,Jam;style,Modal Jazz;style,Chicano Rock;style,Soul Blues;style,Thrash Metal;style,Contemporary Jazz;style,British Blues;style,Italian Prog. Rock;style,Jazz-Rock;style,Southern Soul;style,Raga Rock;style,Doom Metal;style,Shoegaze;style,Contemporary Blues;style,Tulsa Sound;style,Jazz-Rap;style,Chanson;style,Guitar Jazz;style,Power Pop;style,Aussie Rock;style,Britpop;style,Eclectic Prog;style,Arena Rock;style,Glam Rock;style,Romantic;style,Classic Grunge;style,Boogie Rock;style,Noise Rock;style,Post-Grunge;style,Desert Blues;style,New Wave;style,Cantautor;style,Freak Folk;style,Heartland Rock;style,Post-Punk Revival;style,Space Rock;style,Post-Bop;style,Ambiental;style,Alt. Country;style,Bebop;style,Conscious;style,Spanish Folk;style,Fusion;style,Outlaw Country;style,Pop Metal;style,Classic Metal;style,Neo Soul;style,Beat Music;style,Alt. Rap;style,British Metal;style,Chicago Blues;style,Jam Band;style,British Folk-Rock;style,Roots Rock;style,Folk Pop;style,Rockabilly;style,Lo-Fi;style,Soft Rock;style,Baroque Pop;style,R&B;style,Heavy Prog;style,Country Folk;style,Garage Rock Revival;style,Acoustic;style,Garage Rock;style,Symphonic Prog;style,Experimental;style,Hard-Bop;style,Country Rock;style,Neo-Psychedelia;style,Stoner Rock;style,Traditional Pop;style,Crossover Prog;style,Piano Jazz;style,Southern Rock;style,Spanish Rock;style,Swing;style,Songwriter;style,Hi-Fi;style,Pop Rock;style,Indie;style,Acid Rock;style,Americana;style,Electric Blues;style,Blues Rock;style,Live;style,Classic Rock;style,Female Vocal;style,Garage Pop;style,Honky Tonk;style,Hip-Hop Soul;style,Easy Listening;style,Chill-Out Downtempo;style,Nu Jazz;style,Jazz-Pop;style,Old-School;style,Jump Blues;style,Punk Pop;style,Hindustani;style,German Rock;style,Son;style,Jazz-Funk;style,Future Bass;style,House;style,Traditional Country;style,Isicathamiya;style,Comedy;style,Celtic Punk;style,Lounge;style,Proto-Punk;style,Niger Folk;style,Traditional American Folk;style,Psychedelic Grunge;style,Nashville Sound;style,Mexican Rock;style,Dub;style,Renaissance;style,Proto-Prog;style,Folk Metal;style,Uruguayan Rock;style,Folk Punk;style,Modernist;style,Israeli Rock;style,Underground Rap;style,Hair Metal;style,Contemporary Classical;style,Jazz Drumming;style,Folktronica;style,Nubian Folk;style,Melodic Hardcore;style,Funk Metal;style,Reggae Fusion;style,Philadelphia Soul;style,Rap Metal;style,Close Harmony;style,Gypsy-Jazz;style,New Acoustic;style,Flamenco Rock;style,Deep Funk Revival;style,Canterbury Scene;style,Disco;style,Trap;style,Brill Building Sound;style,Spanish Hip-Hop;style,Classic Funk;style,Detroit Blues;style,Gothic Metal;style,Black Metal;style,Electro;style,British Folk-Jazz;style,P-Funk;style,Sludge Metal;style,Contemporary Country;style,Pop Rap;style,Pop Folk;style,Vaudeville Blues;style,New Orleans R&B;style,Synth-Pop;style,Post-Rock;style,Proto-Stoner Rock;style,Baroque;style,Hardcore Punk;style,Tex-Mex;style,Avant-Garde Jazz;style,Horrorcore;style,South Coast;style,Motown Sound;style,Instrumental Country;style,Smooth Jazz;style,Riot Grrrl;style,Cowpunk;style,Glam Metal;style,Memphis Blues;style,Big Band;style,Irish;style,Rockabilly Revival;style,Midwest;style,Torch Songs;style,Free Jazz;style,Medieval;style,Roots Reggae;style,Piano Blues;style,Soul-Jazz;style,Vocal Pop;style,Symphonic Metal;style,Bossa Nova;style,Cool Jazz;style,Psychedelic Soul;style,Latin-Jazz;style,Afro-Cuban;style,Grunge Metal;style,Celtic New Age;style,Surf Rock;style,Hardcore;style,Gangsta;style,Country Pop;style,Delta Blues;style,Pop Punk;style,Grunge Punk;style,American Primitive Guitar;style,Modern Electric Blues;style,East Coast;style,Texas Blues;style,Dixieland;style,Country Boogie;style,Free Improvisation;style,Hill Country Blues;style,Retro Rock;style,Post-Punk;style,Grunge Rock;style,Bluegrass;style,Sadcore;style,Progressive Metal;style,Ska Punk;style,Rock Opera;style,Alt. Metal;style,Mainstream Jazz;style,Pub Rock;style,Sunshine Pop;style,Garage Punk;style,Instrumental Rock;style,Speed Metal;style,Malian Folk;style,Flamenco;style,Trip Hop;style,Bal Folk;style,Detroit Rock;style,Geek Rock;style,Folk Baroque;style,Tishoumaren;style,Smooth Soul;style,Proto-Metal;style,Pagan Folk;style,Traditional European Folk;style,Nu Metal;style,Country Blues;style,Celtic;style,Krautrock;style,West Coast;style,Dream Pop;style,Harmonica Blues;style,Psychedelic Funk;style,Contemporary Funk;style,Psychedelic Rap;style,Argentinian Folk;style,Funk Rock;style,Punk Rock;style,Psychedelic Pop;style,British Psychedelia;style,Contemporary Folk;style,Progressive Folk;style,Argentinian Rock;style,Contemporary Rock;style,90s Rock;style,80s Rock;genre,Música Popular Brasileira;genre,Musical;genre,Indian;genre,Gospel;genre,Japanese;genre,Greek;genre,Nubian;genre,Christmas;genre,New Age;genre,Reggae;genre,Soundtrack;genre,Electronic;genre,Funk;genre,African;genre,Classical;genre,Grunge;genre,Latin;genre,Rock & Roll;genre,Punk;genre,Hip-Hop;genre,World;genre,Pop;genre,Soul;genre,Country;genre,Jazz Vocal;genre,Heavy Metal;genre,Instrumental;genre,Jazz;genre,Folk;genre,Blues;genre,Hard Rock;genre,Alt. Rock;genre,Folk-Rock;genre,Rock;genre,Progressive Rock;genre,Psychedelic Rock;style,Venezuelan Folk;style,Neo-Prog;style,Rond;style,Andro;style,Ska Revival;style,Third Stream;style,Kabuki;style,Japanese Classical;style,Christian Rock;style,Tuareg Music;style,Deep Funk;style,Israeli;style,Afghan Folk;style,Tuvan;style,Asian Folk;style,Jazz-Blues;style,Post-Metal;style,Spoken Word;style,Cumbia;style,Gnawa;style,Candombe Beat;style,Future Jazz;style,Avant-Garde Classical;style,Gothic Rock;style,Sahrawi Folk;style,Dance-Rock;style,Calypso;style,Italian Rock;style,Old-Timey;style,Reggaeton;style,Chillwave;style,Stoner Doom;style,Psychedelic Blues;style,Funk Blues;style,Ragga Hip-Hop;style,Contemporary R&B;style,Choral;style,Polka;style,Afrobeat;style,Radio Program;style,Hang Music;style,Groove Metal;style,Europop;style,Japanese Prog. Rock;style,Jig;style,Circle;style,Traditional Folk;style,Bakersfield Sound;style,Scottish;style,Golden Age;style,Stoner Sludge;style,Bourree;style,Healing Music;style,Doo Wop;style,Zydeco;style,Mauritanian Folk;style,Rumba Fusión;style,Progressive Bluegrass;style,Industrial Metal;style,Exotica;style,Power Metal;style,British Hip-Hop;style,Vals;style,Israeli Folk;style,German Folk;style,Mazurka;style,Afro-Rock;style,Children's Music;style,Griot;style,Acid Jazz;style,Classical Period;style,Mexican Folk;style,Éntekhno;style,Instrumental Hip-Hop;style,Avant-Prog;artist,Trobar de Morte;artist,A Tribe Called Quest;artist,Bob Dylan & The Band;artist,Nancy Sinatra;artist,Ben Harper & The Innocent Criminals;artist,HIM;artist,Nneka;artist,Alice In Chains;artist,Beethoven;artist,Comus;artist,Itoiz;artist,Jamiroquai;artist,The Siegel-Schwall Band;artist,Link Wray;artist,The Kooks;artist,Uncle Tupelo;artist,Blondie;artist,Molly Hatchet;artist,Nilsson;artist,Anacrusa;artist,Buena Vista Social Club;artist,Focus;artist,Muse;artist,The Darkness;artist,Procol Harum;artist,Awon & Phoniks;artist,Poco;artist,Radio Moscow;artist,Rival Sons;artist,The Moody Blues;artist,Lauryn Hill;artist,Stills & Nash;artist,P.O.D.;artist,The Dave Brubeck Quartet;artist,The Troggs;artist,Motorpsycho;artist,Slayer;artist,The Tragically Hip;artist,Traffic;artist,Almendra;artist,Blackalicious;artist,Tito & Tarantula;artist,Fairport Convention;artist,La Raíz;artist,T. Rex;artist,Stills;artist,Nash & Young;artist,Veruca Salt;artist,Vivaldi;artist,Love;artist,Candlebox;artist,Stevie Ray Vaughan & Double Trouble;artist,The Blasters;artist,The Steve Miller Band;artist,The Allman Brothers Band;artist,Elephant Revival;artist,Vox Dei;artist,The Cranberries;artist,Miles Davis Quintet;artist,Cheap Trick;artist,Renaissance;artist,Dover;artist,The Jeff Healey Band;artist,Monster Magnet;artist,Steeleye Span;artist,Journey;artist,Pappo's Blues;artist,Nick Cave & The Bad Seeds;artist,Linkin Park;artist,Bill Evans Trio;artist,Quicksilver Messenger Service;artist,Uriah Heep;artist,Frank Sinatra & The Count Basie Orchestra;artist,The Ozark Mountain Daredevils;artist,Wagner;artist,Joss Stone;artist,Bob Seger & The Silver Bullet Band;artist,Mott The Hoople;artist,The Black Crowes;artist,Blackmore's Night;artist,Bon Jovi;artist,The Pretty Things;artist,Steely Dan;artist,Coldplay;artist,Jimi Hendrix & Curtis Knight;artist,Curtis Knight & The Squires;artist,Magna Carta;artist,Rainbow;artist,The Yardbirds;artist,La Oreja de Van Gogh;artist,Queens Of The Stone Age;artist,Van Halen;artist,Big Brother and The Holding Company;artist,Paul McCartney & Wings;artist,Cypress Hill;artist,Buffalo Springfield;artist,Mark Lanegan Band;artist,Savoy Brown;artist,Son Volt;artist,Them;artist,Mountain;artist,Les Menestriers;artist,The Guess Who;artist,Planxty;artist,John Mayall's Bluesbreakers;artist,Grant Green;artist,Eva Cassidy;artist,Mighty Sam McClain;artist,The West Coast Pop Art Experimental Band;artist,Oasis;artist,Blue Öyster Cult;artist,Heron;artist,Ten Years After;artist,Van Der Graaf Generator;artist,America;artist,Cold Chisel;artist,The Black Keys;artist,Grand Funk Railroad;artist,Mazzy Star;artist,Pixies;artist,The Smashing Pumpkins;artist,The Band;artist,Awon;artist,Pescado Rabioso;artist,The Flamin' Groovies;artist,The 13th Floor Elevators;artist,Heart;artist,Lady Gaga;artist,Small Faces;artist,The Mothers of Invention;artist,The Velvet Underground;artist,Faun;artist,Black Flag;artist,Free;artist,UFO;artist,Derek and The Dominos;artist,Scorpions;artist,R.E.M.;artist,Soundgarden;artist,The Shadows of Knight;artist,Whitesnake;artist,La Pegatina;artist,Platero y Tú;artist,King Crimson;artist,The Robert Cray Band;artist,38 Special;artist,Spirit;artist,Big Star;artist,OutKast;artist,Bob Marley & The Wailers;artist,Nirvana;artist,The Jayhawks;artist,Omnia;artist,Yes;artist,Elvis Costello & The Attractions;artist,Kula Shaker;artist,Red Hot Chili Peppers;artist,Wigwam;artist,Nightwish;artist,The Incredible String Band;artist,Megadeth;artist,Dinosaur Jr.;artist,Phoniks;artist,PJ Harvey;artist,Queen;artist,Passenger;artist,Guns N' Roses;artist,Extremoduro;artist,Tom Petty & The Heartbreakers;artist,Diana Krall;artist,Hawkwind;artist,Captain Beefheart and The Magic Band;artist,Jefferson Airplane;artist,Rush;artist,Eagles;artist,Pearl Jam;artist,Cream;artist,Neil Young & Crazy Horse;artist,Simon & Garfunkel;artist,Creedence Clearwater Revival;artist,The Mamas and The Papas;artist,Barclay James Harvest;artist,Eels;artist,Deep Purple;artist,Aerosmith;artist,Supertramp;artist,Thin Lizzy;artist,Black Sabbath;artist,The Oscar Peterson Trio;artist,Dire Straits;artist,Nat King Cole;artist,The Who;artist,Chet Atkins;artist,Chopin;artist,The Beach Boys;artist,Fleetwood Mac;artist,Iron Maiden;artist,Jethro Tull;artist,Donovan;artist,Santana;artist,The Beatles;artist,The Kinks;artist,The Jimi Hendrix Experience;artist,Led Zeppelin;artist,The Rolling Stones

The string is not displayed. The same on a popup, although the string exists and can be copied/pasted into notepad without problems.
Can't reproduce:
X

Re: Spider Monkey Panel (foo_spider_monkey_panel)

Reply #912
Click on it to edit the text after you copied it on the property and it was saved.
The text stops to be displayed.

On input popups, if you use that string as default value, it is not shown at all
Still happening on last dev build (just tried it)
X

Re: Spider Monkey Panel (foo_spider_monkey_panel)

Reply #913
Show us where else in foobar you can paste and edit that string.

Library menu>Search? Nope
File>Preferences>Display>Default UI>Playlist view>Custom columns? Nope.
Album list>Filter box? Nope.




Re: Spider Monkey Panel (foo_spider_monkey_panel)

Reply #914
And that means... (?)
It's a tool to check the entire library tags, so you can obviously put all the "right" values once checked to exclude them.
It can be copied/pasted fine on many text editors. And the popup window exports that list totally fine too (foobar, omg).

Don't get your point. Is it really big? yes. And what? It clearly makes no sense to use that list on Search, view or filter box.

If there is a display limit on properties or the input box just say that and done. But those are clearly 2 places where that string makes sense, and I find easier to point users to copy/paste the list at the end at properties, than telling them to edit another external file. That still doesn't solve the input box problem anyway, which would not be able to show the list.

Spoiler (click to show/hide)


Re: Spider Monkey Panel (foo_spider_monkey_panel)

Reply #916
PD: now if you ask me about pasting that string somewhere within foobar to prove nothing, here we go hahaha
Spoiler (click to show/hide)

EDIT: don't' get your passive aggressive reactions every-time, although I appreciate your help many times, so it's fine if you want to ignore me. Not sure what's the problem with so many people on this forum, since it seems to be the common behavior. And it's specially hard for people whose mother language is not English.

I'm just asking you why don't you  simply say what you want to say instead of pointing people to what you seem to think are "stupid" reasons. If you want to note there is an UI limit displaying too long strings say that. It's pretty easy, don't you think? The limit is clearly not on every window, so what you think is so obvious and stupid, is not for me.

Re: Spider Monkey Panel (foo_spider_monkey_panel)

Reply #917
@regor , still can't reproduce:
Spoiler (click to show/hide)

[EDIT]: default value in inputbox works as well


Re: Spider Monkey Panel (foo_spider_monkey_panel)

Reply #919
It's true that pasting that string into some other foobar places reproduce the same behavior (search/filter/facets, ...). But on the preference panels works right (see at top). May be a win 7 thing as you noted, I have access to another win 7 system with a clear foobar installation and a win 10 system, so I will try on both and report.

Spoiler (click to show/hide)

The string is there, even if it's not displayed, so it can be copied into other place, edited, and pasted back again. So there is a workaround for the bug. Thanks anyway!


Re: Spider Monkey Panel (foo_spider_monkey_panel)

Reply #921
Edited the posts. Will have it in mind from now on.

And thanks

Btw, are negative lookahead assertions supported on SMP? OR that's one of  RegExp features not included?

Re: Spider Monkey Panel (foo_spider_monkey_panel)

Reply #922
Edited the posts. Will have it in mind from now on.

And thanks

Btw, are negative lookahead assertions supported on SMP? OR that's one of  RegExp features not included?
Well, that sample produces the same output both in browser and SMP, which most likely means that it works.

Re: Spider Monkey Panel (foo_spider_monkey_panel)

Reply #923
I ask because yesterday I tried to replace all single '&' with '&&' but skip all existing '&&', and it was not possible using negative look-ahead:

Code: [Select]
"use strict";

const text = "This is my && text and & text";

console.log(text.replace(/&&/g,'&').replace(/&/g,'&&')); // 2 steps but works as intended
console.log(text.replace(/&(?!&)/g,'&')); // Needs a negative look-ahead too to work right

Code: [Select]
"use strict";

const text = "This is my && text and & text";
console.log(text.replace(/(?<!&)&/g,'&')); // Throws error
console.log(text.replace(/(?<!&)&(?!&)/g,'&')); // Also throws error

The regexp is right (I had to change from javscript to PCRE though):
https://regexr.com/
Spoiler (click to show/hide)
But the mozilla documentation states it's included since ECMA 2018 (?).

EDIT:  all this comes from an omission at the github doc:
https://theqwertiest.github.io/foo_spider_monkey_panel/assets/generated_files/docs/html/MenuObject.html
Because menu entries don't allow single '&'. In win 7 they are converted into blank spaces and in win 10 they make next char underscored.
Which is the warning given here:
https://theqwertiest.github.io/foo_spider_monkey_panel/assets/generated_files/docs/html/GdiGraphics.html#GdiDrawText
But it's missing on the menu object section, where it applies the same (and there is no flag to change that behavior?). So they must be doubled.

Re: Spider Monkey Panel (foo_spider_monkey_panel)

Reply #924
Another request, https://hydrogenaud.io/index.php?topic=120979.msg999866#msg999866

I use fb.GetQueryItems() with try/catch to check queries (for my playlist manager), but forgot Autoplaylists allow the SORT command at the end. The previous method obviously fails with that command, could it be considered on future releases? Either the same method, or a V2 which allows checking the SORT part too.

Right now either you allow anything (like marc2003 old script) and it will obviously crash as soon as there is a typo, or you don't check anything after SORT to allow those type of autoplaylists.

The second approach is compromise, since it will still crash if you make a typo after the SORT part, even if the other part is valid.
Spoiler (click to show/hide)