Yes, if you want something to live beyond the current function call, you
should use malloc(). That will only be reused after you call free() on it.

On Tue, Oct 20, 2015 at 3:51 PM, Pau Ballart <[email protected]> wrote:

> Updated to 1.35 but same problem...
> Maybe the question to formulate would be: How can I save in a
> global/static variable some information so that I can acces it later in the
> callback function and make sure it's not overwritten?
> What do you think about using malloc() somehow? Would it work?
>
> 2015-10-20 14:18 GMT-07:00 Alon Zakai <[email protected]>:
>
>> Might be worth trying current master (or incoming) then, which is now
>> 1.35.0.
>>
>> On Tue, Oct 20, 2015 at 2:16 PM, Pau Ballart <[email protected]> wrote:
>>
>>> $ emcc -v
>>> emcc (Emscripten gcc/clang-like replacement + linker emulating GNU ld)
>>> 1.34.8
>>> clang version 3.7.0
>>> Target: x86_64-apple-darwin15.0.0
>>> Thread model: posix
>>> INFO     root: (Emscripten: Running sanity checks)
>>>
>>> 2015-10-20 14:05 GMT-07:00 Alon Zakai <[email protected]>:
>>>
>>>> One possible issue is that if those values are on the stack, and the
>>>> scope exits, then that stack memory might be reused. For example this is
>>>> unsafe:
>>>>
>>>> {
>>>>   char buffer[100];
>>>>   // write into buffer
>>>>   emscripten_async_wget(..., (void*)buffer);
>>>> }
>>>>
>>>> The buffer will be released before the async callback occurs, and other
>>>> data might be written into it before the callback reads from it.
>>>>
>>>> Which version of emscripten are you using, btw? I remember a while back
>>>> we had a bug around this.
>>>>
>>>> On Tue, Oct 20, 2015 at 1:36 PM, Pau Ballart <[email protected]>
>>>> wrote:
>>>>
>>>>> Hello,
>>>>>
>>>>> After some research and some refactor I did the following:
>>>>>
>>>>>    - In my p3stuff function I
>>>>>    call emscripten_set_main_loop(wait_wgets, 0, 0); so the application is 
>>>>> not
>>>>>    terminated.
>>>>>    - In wait_wgets I call the emscripten_async_wget(imageUrl, path,
>>>>>    onLoaded, onError); only the first time the method is called.
>>>>>    - In the onLoaded callback I call emscripten_cancel_main_loop();
>>>>>    and then I call my c code that perform the jpeg stuff.
>>>>>
>>>>> Problem is:
>>>>> the p3stuff function has 2 arguments: int p3stuff(char *imgUrl,
>>>>> unsigned char *wrappedkey)
>>>>> When it's called i have two global variables unsigned char
>>>>> *wrappedKey; and char *imageUrl; which are assigned with the argument like
>>>>> that:
>>>>>
>>>>> wrappedKey = wrappedkey;
>>>>> imageUrl = imgUrl;
>>>>>
>>>>> I do that in order to access the image url from the wait_wgets() or
>>>>> the wrapped key from the onLoaded callback but I think there is some 
>>>>> memory
>>>>> management problems cause if I print the url just before calling
>>>>> emscripten_async_wget the imageUrl variable content is completely rubbish
>>>>> but id I don't print anything it works.
>>>>>
>>>>> So how can I use the global variables in C in order to not get
>>>>> overwritten? Maybe using malloc, or memcopy?
>>>>>
>>>>> Thanks,
>>>>>
>>>>> Pau
>>>>>
>>>>> 2015-10-19 10:53 GMT-07:00 Pau Ballart <[email protected]>:
>>>>>
>>>>>> Okay I will try the async version and let you know.
>>>>>>
>>>>>> Thanks
>>>>>>
>>>>>> 2015-10-17 19:37 GMT-07:00 Alon Zakai <[email protected]>:
>>>>>>
>>>>>>> The only tricky thing with emscripten_wget is that as mentioned in
>>>>>>> the docs,
>>>>>>>
>>>>>>>
>>>>>>> http://kripken.github.io/emscripten-site/docs/api_reference/emscripten.h.html#c.emscripten_wget
>>>>>>>
>>>>>>> it requires the ASYNCIFY option. It's easier in general to use the
>>>>>>> async version, emscripten_async_wget, which does not require ASYNCIFY.
>>>>>>>
>>>>>>>
>>>>>>> On Sat, Oct 17, 2015 at 10:47 AM, Pau Ballart <[email protected]>
>>>>>>> wrote:
>>>>>>>
>>>>>>>> I think the php code is correct so I'm just trying to download an
>>>>>>>> image and process it's data but I think I'm missing something about the
>>>>>>>> lifecycle or wget function because I get unexpected exit errors.
>>>>>>>>
>>>>>>>> So I'd like to know if the  emscripten_wget(imgUrl, path); is
>>>>>>>> correct because I have the weirdest behaviour ever that depending on 
>>>>>>>> the
>>>>>>>> p3stuff function param "wrappedkey" the download succeeds or not.
>>>>>>>>
>>>>>>>> 2015-10-15 17:07 GMT-07:00 Alon Zakai <[email protected]>:
>>>>>>>>
>>>>>>>>> I see you have
>>>>>>>>>
>>>>>>>>> P3Func = Module.cwrap('p3stuff', 'number', ['string', 'string']);
>>>>>>>>>
>>>>>>>>> which looks good.  You can then call it with something like
>>>>>>>>>
>>>>>>>>> result = P3Func('first', 'second');
>>>>>>>>>
>>>>>>>>> which I see you are doing. What part of that are you trying to
>>>>>>>>> improve?
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On Thu, Oct 15, 2015 at 12:59 PM, Pau Ballart <[email protected]>
>>>>>>>>> wrote:
>>>>>>>>>
>>>>>>>>>> Okay so the php is just calling a function I declared. Because I
>>>>>>>>>> need to pass the image url as an argument and a key, I don't know 
>>>>>>>>>> how to do
>>>>>>>>>> it using the main function so I changed the main function for this 
>>>>>>>>>> one with
>>>>>>>>>> the two arguments and then called this function from my php code.
>>>>>>>>>> Is there a better way to call emscripten passing parameters?
>>>>>>>>>>
>>>>>>>>>> Thanks.
>>>>>>>>>>
>>>>>>>>>> 2015-10-15 12:55 GMT-07:00 Alon Zakai <[email protected]>:
>>>>>>>>>>
>>>>>>>>>>> It would be good to focus the question more, it's hard to tell
>>>>>>>>>>> what the core issue is. Try to reduce the problem to just one 
>>>>>>>>>>> concrete
>>>>>>>>>>> thing, like just loading a file, and doing it without that custom 
>>>>>>>>>>> PHP
>>>>>>>>>>> script, for example.
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> On Thu, Oct 15, 2015 at 12:27 PM, Pau Ballart <
>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>
>>>>>>>>>>>> Hello developers,
>>>>>>>>>>>>
>>>>>>>>>>>> I'm starting a project and I'm new at Javascript and
>>>>>>>>>>>> emscripten. I'm trying to download some image data from a server 
>>>>>>>>>>>> and then
>>>>>>>>>>>> process it using some c functions I already have working. I asked 
>>>>>>>>>>>> this
>>>>>>>>>>>> question in Stackoverflow so I share you the link and maybe one of 
>>>>>>>>>>>> you can
>>>>>>>>>>>> help me.
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> http://stackoverflow.com/questions/33087205/emscripten-code-for-image-data-download-using-emscripten-wget-or-emscripten-asyn
>>>>>>>>>>>>
>>>>>>>>>>>> Thank you,
>>>>>>>>>>>>
>>>>>>>>>>>> Pau B
>>>>>>>>>>>>
>>>>>>>>>>>> --
>>>>>>>>>>>> You received this message because you are subscribed to the
>>>>>>>>>>>> Google Groups "emscripten-discuss" group.
>>>>>>>>>>>> To unsubscribe from this group and stop receiving emails from
>>>>>>>>>>>> it, send an email to
>>>>>>>>>>>> [email protected].
>>>>>>>>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> --
>>>>>>>>>>> You received this message because you are subscribed to a topic
>>>>>>>>>>> in the Google Groups "emscripten-discuss" group.
>>>>>>>>>>> To unsubscribe from this topic, visit
>>>>>>>>>>> https://groups.google.com/d/topic/emscripten-discuss/BEb-1mjDvZI/unsubscribe
>>>>>>>>>>> .
>>>>>>>>>>> To unsubscribe from this group and all its topics, send an email
>>>>>>>>>>> to [email protected].
>>>>>>>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>> Pau Ballart
>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>> You received this message because you are subscribed to the
>>>>>>>>>> Google Groups "emscripten-discuss" group.
>>>>>>>>>> To unsubscribe from this group and stop receiving emails from it,
>>>>>>>>>> send an email to [email protected].
>>>>>>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>> You received this message because you are subscribed to a topic in
>>>>>>>>> the Google Groups "emscripten-discuss" group.
>>>>>>>>> To unsubscribe from this topic, visit
>>>>>>>>> https://groups.google.com/d/topic/emscripten-discuss/BEb-1mjDvZI/unsubscribe
>>>>>>>>> .
>>>>>>>>> To unsubscribe from this group and all its topics, send an email
>>>>>>>>> to [email protected].
>>>>>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>> Pau Ballart
>>>>>>>>
>>>>>>>> --
>>>>>>>> You received this message because you are subscribed to the Google
>>>>>>>> Groups "emscripten-discuss" group.
>>>>>>>> To unsubscribe from this group and stop receiving emails from it,
>>>>>>>> send an email to [email protected].
>>>>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> You received this message because you are subscribed to a topic in
>>>>>>> the Google Groups "emscripten-discuss" group.
>>>>>>> To unsubscribe from this topic, visit
>>>>>>> https://groups.google.com/d/topic/emscripten-discuss/BEb-1mjDvZI/unsubscribe
>>>>>>> .
>>>>>>> To unsubscribe from this group and all its topics, send an email to
>>>>>>> [email protected].
>>>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> Pau Ballart
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Pau Ballart
>>>>>
>>>>> --
>>>>> You received this message because you are subscribed to the Google
>>>>> Groups "emscripten-discuss" group.
>>>>> To unsubscribe from this group and stop receiving emails from it, send
>>>>> an email to [email protected].
>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>
>>>>
>>>> --
>>>> You received this message because you are subscribed to a topic in the
>>>> Google Groups "emscripten-discuss" group.
>>>> To unsubscribe from this topic, visit
>>>> https://groups.google.com/d/topic/emscripten-discuss/BEb-1mjDvZI/unsubscribe
>>>> .
>>>> To unsubscribe from this group and all its topics, send an email to
>>>> [email protected].
>>>> For more options, visit https://groups.google.com/d/optout.
>>>>
>>>
>>>
>>>
>>> --
>>> Pau Ballart
>>>
>>> --
>>> You received this message because you are subscribed to the Google
>>> Groups "emscripten-discuss" group.
>>> To unsubscribe from this group and stop receiving emails from it, send
>>> an email to [email protected].
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>>
>> --
>> You received this message because you are subscribed to a topic in the
>> Google Groups "emscripten-discuss" group.
>> To unsubscribe from this topic, visit
>> https://groups.google.com/d/topic/emscripten-discuss/BEb-1mjDvZI/unsubscribe
>> .
>> To unsubscribe from this group and all its topics, send an email to
>> [email protected].
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>
>
> --
> Pau Ballart
>
> --
> You received this message because you are subscribed to the Google Groups
> "emscripten-discuss" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups 
"emscripten-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to