|
|
|
#1 |
|
Messages: n/a
Hébergeur: |
Bon, pour une fois que j'arrive à trouver des bug dans le code source original de delphi
![]() dans l'unité IsapiHTTP : procedure TWebRequest.ExtractContentFields(Strings: TStrings); var ContentStr: string; begin if ContentLength > 0 then begin ContentStr := Content; if Length(ContentStr) < ContentLength then ContentStr := ContentStr + ReadString(ContentLength - Length(ContentStr)); ExtractFields(['&'], [], PChar(ContentStr), Strings); end; end; ben c du n'importenawak ! Car ici il dise que si ContentStr est < à contentLength alors il faut lire la suite grace a readstring (readclient en fait). Mais le gros soucie c'est que ReadString(ContentLength - Length(ContentStr)); va pas forcement lire EXACTEMENT ContentLength - Length(ContentStr) characteres !!!! il ne lit en generale que par packet de 15 ko !!!! du coup vous l'aurez compris l'instruction if Length(ContentStr) < ContentLength then ContentStr := ContentStr + ReadString(ContentLength - Length(ContentStr)); Ne sert à rien ou peut être à augmenter le contentStr de 15ko (donc on n'est pas plus avancé, voire meme pire car une fois qu'un readclient à ete fait on peut plus relire les données par la suite ... du coup la, la requete et belle est bien foutu vu que contentStr est une variable local perdu à la sortie de la fonction !!!) Il aurait (par exemple) fallut faire : While Length(ContentStr) < ContentLength do ContentStr := ContentStr + ReadString(ContentLength - Length(ContentStr)); voila stephane |
|
|
|
#2 |
|
Messages: n/a
Hébergeur: |
> Bon, pour une fois que j'arrive à trouver des bug dans le code source
> original de delphi ![]() Si tu penses avoir vraiment trouvé une bug dans Delphi, écris un rapport sur Quality Central (http://qc.codegear.com). Pour que cela ait un effet significations il faut: 1) Faire une description claire (en anglais) et courte qui explique le résultat obtenu et celui qui est souhaité. 2) Surtout créer un programme de test qui met en évidence le problème 3) Rédiger des 'steps' (des étapes à suivre) pour mettre en évidence le problème avec le programme de test fourni. Quand tu as fait tout cela, si tu me donne le N° du rapport ainsi créé, j'y jetterai un oeil et si je m'y retrouve et peut reproduire le problème, je le ferai passer dans le système interne de bug tracking de CodeGear (RAID). Merci d'avance. -- francois.piette@overbyte.be Auteur du freeware ICS - Internet Component Suite Auteur du middleware multi-tiers MidWare web: http://www.overbyte.be blog: http://francois-piette.blogspot.com "loki" <loki5100-newsgroup@yahoo.fr> a écrit dans le message de news:fmd1mq$u05$1@sd-6498.dedibox.fr... > Bon, pour une fois que j'arrive à trouver des bug dans le code source > original de delphi ![]() > > dans l'unité IsapiHTTP : > > procedure TWebRequest.ExtractContentFields(Strings: TStrings); > var > ContentStr: string; > begin > if ContentLength > 0 then > begin > ContentStr := Content; > if Length(ContentStr) < ContentLength then > ContentStr := ContentStr + ReadString(ContentLength - > Length(ContentStr)); > ExtractFields(['&'], [], PChar(ContentStr), Strings); > end; > end; > > ben c du n'importenawak ! > > Car ici il dise que si ContentStr est < à contentLength alors il faut lire > la suite grace a readstring (readclient en fait). Mais le gros soucie > c'est que ReadString(ContentLength - Length(ContentStr)); va pas > forcement lire EXACTEMENT ContentLength - Length(ContentStr) characteres > !!!! il ne lit en generale que par packet de 15 ko !!!! > > du coup vous l'aurez compris l'instruction > if Length(ContentStr) < ContentLength then > ContentStr := ContentStr + ReadString(ContentLength - > Length(ContentStr)); > Ne sert à rien ou peut être à augmenter le contentStr de 15ko (donc on > n'est pas plus avancé, voire meme pire car une fois qu'un readclient à ete > fait on peut plus relire les données par la suite ... du coup la, la > requete et belle est bien foutu vu que contentStr est une variable local > perdu à la sortie de la fonction !!!) > > Il aurait (par exemple) fallut faire : > While Length(ContentStr) < ContentLength do > ContentStr := ContentStr + ReadString(ContentLength - > Length(ContentStr)); > > > voila > > stephane |
|
![]() |
| Outils de la discussion | |
|
|