Warning: mysqli::__construct(): (HY000/1203): User howardkn already has more than 'max_user_connections' active connections in D:\Inetpub\vhosts\howardknight.net\al.howardknight.net\includes\artfuncs.php on line 21
Failed to connect to MySQL: (1203) User howardkn already has more than 'max_user_connections' active connections
Warning: mysqli::query(): Couldn't fetch mysqli in D:\Inetpub\vhosts\howardknight.net\al.howardknight.net\index.php on line 66
Article <v4n0rv$41ir$1@dont-email.me>
Deutsch   English   Français   Italiano  
<v4n0rv$41ir$1@dont-email.me>

View for Bookmarking (what is this?)
Look up another Usenet article

Path: ...!news.mixmin.net!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail
From: Janis Papanagnou <janis_papanagnou+ng@hotmail.com>
Newsgroups: comp.lang.c
Subject: Re: Whaddaya think?
Date: Sun, 16 Jun 2024 17:37:34 +0200
Organization: A noiseless patient Spider
Lines: 78
Message-ID: <v4n0rv$41ir$1@dont-email.me>
References: <666ded36$0$958$882e4bbb@reader.netnews.com>
 <20240616015649.000051a0@yahoo.com> <v4lm16$3s87h$4@dont-email.me>
 <v4lmso$3sl7n$1@dont-email.me> <v4lr0m$3tbpj$1@dont-email.me>
 <8734pd4g3s.fsf@nosuchdomain.example.com> <v4ltuj$3trj2$1@dont-email.me>
 <20240616111134.00001f18@yahoo.com> <v4ma0a$3vrne$1@dont-email.me>
 <20240616123850.00002d93@yahoo.com> <v4md99$ebo$1@dont-email.me>
 <20240616143143.00001d8a@yahoo.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=windows-1252
Content-Transfer-Encoding: 7bit
Injection-Date: Sun, 16 Jun 2024 17:37:35 +0200 (CEST)
Injection-Info: dont-email.me; posting-host="567efb17d94aca7729125b64ceeb67a7";
	logging-data="132699"; mail-complaints-to="abuse@eternal-september.org";	posting-account="U2FsdGVkX1/nWI96oqovucuGB9Kf1ZMm"
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101
 Thunderbird/45.8.0
Cancel-Lock: sha1:pV/WiHUa8MTAjLcANaM9CX7YQlM=
In-Reply-To: <20240616143143.00001d8a@yahoo.com>
X-Enigmail-Draft-Status: N1110
Bytes: 4387

On 16.06.2024 13:31, Michael S wrote:
> On Sun, 16 Jun 2024 12:03:21 +0200
> Janis Papanagnou <janis_papanagnou+ng@hotmail.com> wrote:
> 
>> On 16.06.2024 11:38, Michael S wrote:
> 
>>
>> Again; which ones?
>>
>> Janis
>>
>>> [...]  
>>
>>
> 
> The main misconceptions are about what is returned by fgets() and by
> realloc().
> fgets() returns its first argument in all cases except EOF or FS read
> error. That includes the case when the buffer is too short to
> accommodate full input line.

   fgets() return s on success, and NULL on error or when end
           of file occurs while no characters have been read.

I am interested in the success case, thus "fgets() != NULL".
The buffer size is controlled by the second function parameter.

> 
> With realloc() there are two issues:
> 1. It can sometimes return its first argument, but does not have to. In
> scenario like yours it will return a different pointer quite soon.
> 2. When realloc() returns NULL, it does not de-allocate its first
> argument.
> 
> The second case, of course, is not important in practice, because in
> practice you're very unlikely to see realloc() returning NULL, and if
> nevertheless it did happen, you program is unlikely to survive and give
> meaningful result anyway. Still, here on c.l.c we like to pretend that
> we can meaningfully handle allocation failures.

You may provide "correct" code (if you think mine is wrong). Or just
inspect how it behaves; here's the output after two printf's added:

$ printf "123 456 789 101112 77 88 99 101 999" | realloc
+++>123 456 78<+++
===>123 456 78<===
+++>9 101112 7<+++
===>123 456 789 101112 7<===
+++>7 88 99 10<+++
===>123 456 789 101112 77 88 99 10<===
+++>1 999<+++
===>123 456 789 101112 77 88 99 101 999<===
123 456 789 101112 77 88 99 101 999

The +++data+++ is the chunk read, and the ===data=== is the overall
buffer content, and the final line again the result (as before, with
the added newline as documented for puts()).

Even though my code is just an "ad hoc test code" to demonstrate the
procedure I outlined - and as such test code certainly lacking quite
some error handling and much more - it does exactly what I intended it
to do, and what I've implemented according to what I read in the man
pages. I cannot see any "misconception", it does what was _intended_.

There's indeed one point that I _deliberately_ ignored for the test
code; actually the point you mentioned as "not important in practice".

Again: You may provide "correct" code (if you think mine is "wrong"),
or "better" code, usable for production instead of a test code.

But your tone and statements were (as observed so often) inadequate;
I quote from your post that started the subthread:
"However it looks unlikely that it does what you meant for it to do."

It does exactly what I meant to do (as you can see in the logs above).

Janis