Hi Edward,
The value of the integer parameter 'active_wifis', passed by reference
to 'getRadiatingWifiList' is lost. I added the following line 232:
[....]
*active_wifis = -1;
char* tmp_buffer = scan_buffer;
printf("\nactive_wifis = %i\n\n", active_wifis); /***** ADDED LINE ****/
while((scan_buffer = fgets(scan_buffer, 1024, shell_reader)))
{
z++;
if (z == 1)
active_wifi_list = calloc(sizeof(void*), 10);
[....]
And this is what i get running ./backend 10:
# ./backend 10
active_wifis = -877165076
*** Error in `./backend': realloc(): invalid pointer: 0x00007fff124a3424 ***
Aborted
Cheers,
Aitor.
On 12/06/2015 03:19 PM, Edward Bartolo wrote:
> Hi Aitor,
>
> This is my latest edit of the code so that memory allocations are done
> when needed instead of the iteration just before more memory is
> required.
>
> The edited code:
> if (z == 1)
> active_wifi_list = calloc(10, sizeof(void*));
> else if ((z - 1) % 20 == 0)
> active_wifi_list = realloc(active_wifis, (((z - 1)/2) + 10)*sizeof(void*));
>
>
> Edward
>
> On 06/12/2015, aitor_czr<aitor_czr@???> wrote:
>> >Hi Edward,
>> >
>> >I will try it later, thanks:)
>> >
>> > Aitor.
>> >
>> >On 12/06/2015 01:10 PM, Edward Bartolo wrote:
>>> >>Hi Aitor,
>>> >>
>>> >>I edited the code as follows:
>>> >>
>>> >> if (z == 1)
>>> >> active_wifi_list = calloc(10, sizeof(void*));
>>> >> else if (z % 20 == 0)
>>> >> active_wifi_list = realloc(active_wifis, ((z/2) + 10)*sizeof(void*));
>>> >>
>>> >>Please, if you can run the code and reply back whether it worked. My
>>> >>neighbourhood has less than 10 active wifi repeaters.
>>> >>
>>> >>Edward