Bug in RegExPlugin

Jens Teich info at jensteich.de
Sun Dec 22 21:34:45 UTC 2013


 >200 times ^A which gave me the clue for the correct solution: no 
finally clause at all!

Thanks Edi

Am 22.12.13 21:45, schrieb Edi Weitz:
> Thanks.  What happens if you do this instead?
>
> (loop with ptr = (make-pointer :address result-ptr
>                                     :type :unsigned-short)
>            for index from 0 below (1- result-size)
>            for char across string
>            do (setf (dereference ptr :index index) (char-code char))
>            finally (loop for i from index to (1- result-size)
>                          do (setf (dereference ptr :index i) #\Null)))
>
> (Can't test myself.  I don't have a machine with FM on it anymore.)
>
>
>
> On Sun, Dec 22, 2013 at 8:31 PM, Jens Teich <info at jensteich.de> wrote:
>> result-size is 256 always.
>>
>> Am 22.12.13 13:40, schrieb Edi Weitz:
>>
>>> @Jens: At first sight, the code looks right to me - or I'm not seeing
>>> the forest for the trees.  It could be that FileMaker (maybe only in a
>>> specific version or maybe only on the Mac?) ignores the terminating
>>> NUL character at the end of the string and expects us to fill the
>>> whole buffer?  (Do you happen to know or can you figure out the value
>>> of RESULT-SIZE when the function is called?
>>>
>>> @Russell: We're not as dumb as you might think.  The mailing list
>>> information used to be correct and will be correct again.  We're just
>>> having a transition phase in which some things are out of sync due to
>>> problems with the guy who maintained the common-lisp.net servers.
>>>
>>> Cheers,
>>> Edi.
>>>
>>>
>>>
>>> On Sun, Dec 22, 2013 at 12:49 PM, Jens Teich <info at jensteich.de> wrote:
>>>>
>>>>
>>>>
>>>>
>>>> -------- Original-Nachricht --------
>>>> Betreff: Re: Bug in RegExPlugin
>>>> Datum: Sun, 22 Dec 2013 12:38:59 +0100
>>>> Von: Jens Teich <info at jensteich.de>
>>>> An: Russell Watson <russell at mrwatson.de>, FM-Lisp+help at common-lisp.net
>>>>
>>>> Hi Russel,
>>>>
>>>> thanks for the bug report. This is a tough one (for me). The source of
>>>> the problem seems to be here:
>>>>
>>>> (Defun handle-get-string-message (which-string result-size result-ptr)
>>>>     "Handles `kFMXT_GetString' messages from FileMaker.
>>>> WHICH-STRING is the ID for the information FileMaker wants to
>>>> have, RESULT-PTR is where the answer string is supposed to be
>>>> stored, and RESULT-SIZE is the maximal size of the result."
>>>>     (when-let (string (case which-string
>>>>                         (#.+k-fmxt-name-str+ *plugin-name*)
>>>>                         (#.+k-fmxt-app-config-str+ *plugin-help-text*)
>>>>                         (#.+k-fmxt-options-str+ (create-options-string))))
>>>>       #+:win32
>>>>       (convert-to-foreign-string string
>>>>                                  :limit (1- result-size)
>>>>                                  :external-format :unicode
>>>>                                  :into (make-pointer :address result-ptr
>>>>                                                      :type :wchar-t))
>>>>       #-:win32
>>>>       (loop with ptr = (make-pointer :address result-ptr
>>>>                                      :type :unsigned-short)
>>>>             for index from 0 below (1- result-size)
>>>>             for char across string
>>>>             do (setf (dereference ptr :index index) (char-code char))
>>>>             finally (setf (dereference ptr :index index) #\Null))))
>>>>
>>>> ;; from fm-plugin-tools, file main.lisp
>>>>
>>>> The variable *plugin-name* contains the string "RegExPlugin" and is 11
>>>> characters long.
>>>>
>>>> On Win the problem does not occur so the problem is in the branch after
>>>> #-:win32.
>>>>
>>>> I played a bit with the name of the plugin. When I make it very long,
>>>> more unwanted additional characters appear:
>>>>
>>>> RegexPlugIn***********************************************************
>>>> **********************************************************************
>>>> **********************************************************************
>>>> ********************************************* ￿￿篇ͨe;0.2.4;Disabled
>>>>
>>>> Maybe the author of this code (Edi Weitz) reads this and can help or I
>>>> will ask for help on the LispWorks mailing list.
>>>>
>>>> ~Jens
>>>>
>>>> ps Russel: why do you use this old version of the plugin? I improved the
>>>> plugin in the current version according to your input at the FileMaker
>>>> Stammtisch some time ago. The RegP-Positions Function has two additional
>>>> parameters now:
>>>>
>>>> Positions ( regex ; target {; flags ; pairInnerDelimiter ;
>>>> pairOuterDelimiter } )
>>>>
>>>> Am 19.12.13 22:01, schrieb Russell Watson:
>>>>>
>>>>>
>>>>> Hallo Jens / Lisp-developers / RegEx Plugin Entwickler,
>>>>>
>>>>> ----------------------------------------
>>>>> OK - so this is the message in german:
>>>>>
>>>>> ich habe bemerkt, dass unter fm12 liefert das RegExPlugin bei der Get(
>>>>> InstalledPlugins ) Funktion das folgende zurück
>>>>>
>>>>>                                ^
>>>>> Der kleine Diamant am ende vom Pluginname scheint eine ASCII( 1 )  zu
>>>>> sein. Ich nehme an, dass das einen Fehler ist und es in dieser Stelle
>>>>> keine ASCII(1) sein soll.
>>>>>
>>>>> Grüße
>>>>>
>>>>> Russell Watson (aka MrWatson)
>>>>>
>>>>>
>>>>> ----------------------------------------
>>>>> and here again in case you guys only speak english:
>>>>>
>>>>> Hi,
>>>>>
>>>>> I use the RegExp FileMaker Plugin, that is available from Jens Teichs
>>>>> website under the URL
>>>>> http://jensteich.de/wp-content/regex-plugin/RegexPlugIn.zip.
>>>>>
>>>>> I noticed today, that the plugin returns an ASCII(1) character (the
>>>>> little diamond in the picture) in its reply to the FileMaker Get(
>>>>> InstalledPlugins ) function.
>>>>>
>>>>> That I presume is a bug and an undesired character in the plugins
>>>>> string.
>>>>>
>>>>> ----------------------------------------
>>>>> An (important) aside:
>>>>>
>>>>> It is not explicitly clear from the combination of Jens Teichs website
>>>>> and the linked Common Lisp "mailing list Informartion" page
>>>>> (http://common-lisp.net/cgi-bin/mailman/listinfo/fm-lisp)
>>>>>
>>>>> 1) if this is the correct email adress that I am writing to
>>>>> 2) what the <listname> is of the mailing list for the RegExp plugin - is
>>>>> it RegExp? is it FM-List*? is it something else?
>>>>> 3) which is the correct form of the emailadress: it is mentioned on
>>>>> thesss page if it is possible to just write to
>>>>> <listname>@common-lisp.net <http://common-lisp.net>
>>>>>
>>>>>
>>>>> I hope that all helps.
>>>>>
>>>>> Thanks for the Plugin.
>>>>>
>>>>> Russell Watson (aka MrWatson)
>>>>>
>>>>>
>>>>>     * ...I have just noticed that fm-list is in the url, which PROBABLY
>>>>> means that <listname>="fm-list"  ... but it needs to be EXPLICIT in at
>>>>> least one of the pages ... otherwise you're only going to get emails
>>>>> from real nerds. ;-)
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>
>>>
>>
>




More information about the fm-lisp mailing list