+ Répondre à la discussion
Affichage des résultats 1 à 13 sur 13
  1. #1
    Expert Confirmé Sénior
    Avatar de smyley
    Inscrit en
    juin 2003
    Messages
    6 270
    Détails du profil
    Informations forums :
    Inscription : juin 2003
    Messages : 6 270
    Points : 7 783
    Points
    7 783

    Par défaut [Outils][C# - #ZipLib] Dépassements de capacité arithmétique



    En utilisant la classe BZip2 de la #ZipLib, j'ai rencontré un pb que je n'avais jamais connu
    Ma config : WinXP + DotNet 1.1 + VS.Net 2003

    En voulant compresser n'importe quoi avec BZip2OutputStream avec les paramètres par défaut, j'obtient une érreur :
    Exception non gérée : System.OverflowException: L'opération arithmétique a provoqué un dépassement de capacité.
    at ICSharpCode.SharpZipLib.Checksums.StrangeCRC.Update(Int32 inCh) in c:\lksoft\applications\ms.net\izdb\sharpziplib\checksums\strangecrc.cs:line 141
    at ICSharpCode.SharpZipLib.BZip2.BZip2OutputStream.WriteRun() in c:\lksoft\applications\ms.net\izdb\sharpziplib\bzip2\bzip2outputstream.cs:line 437
    at ICSharpCode.SharpZipLib.BZip2.BZip2OutputStream.WriteByte(Byte bv) in c:\lksoft\applications\ms.net\izdb\sharpziplib\bzip2\bzip2outputstream.cs:line 422
    at ICSharpCode.SharpZipLib.BZip2.BZip2OutputStream.Write(Byte[] buf, Int32 off, Int32 len) in c:\lksoft\applications\ms.net\izdb\sharpziplib\bzip2\bzip2outputstream.cs:line 137
    ...
    Cette érreur correspond toujours à ce block de code :
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    		public void Update(int inCh)
    		{
    			int temp = (globalCrc >> 24) ^ inCh;
    			if (temp < 0) 
    			{
    				temp = 256 + temp;
    			}
                            //Erreur à la ligne suivante
    			globalCrc = (int)((globalCrc << 8) ^ crc32Table[temp]);
    		}
    Pourquoi ai-je cette érreur ?
    note. J'ai testé avec les fichiers StrangeCRC.cs, BZip2*.cs des version 0.50,0.60,0.80,0.84, de plus jusqu'à hier mon assembly fonctionnait nikel

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    juillet 2002
    Messages
    487
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : juillet 2002
    Messages : 487
    Points : 608
    Points
    608

    Par défaut

    La première chose à faire est de décomposer la ligne en question pour voir quelle opération cause une erreur :

    Code :
    1
    2
    3
            int val1 = globalCrc << 8;
            int val2 = crc32Table[temp];
           globalCrc = val1 ^ val2;
    globalCrc est bien un Int32 ?
    On ne peut pas faire boire un âne qui n'a pas soif.

  3. #3
    Expert Confirmé Sénior
    Avatar de smyley
    Inscrit en
    juin 2003
    Messages
    6 270
    Détails du profil
    Informations forums :
    Inscription : juin 2003
    Messages : 6 270
    Points : 7 783
    Points
    7 783

    Par défaut

    Citation Envoyé par NicolasG
    globalCrc est bien un Int32 ?
    Oui.

    Je vient d'éssayer un truc, dans les options de Visual j'ai désactivé ( False )
    Vérifier les dépacements de capacité arithmétiques positifs et négatifs et ça remarche nikel , et donc avant, vu que je compilait avec SharpDevelop cette option semble ne pas être définie

    Mais alors pourquoi vérifier ou non les dépacements de capacité ?

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    juillet 2002
    Messages
    487
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : juillet 2002
    Messages : 487
    Points : 608
    Points
    608

    Par défaut

    Citation Envoyé par documentation C# Opérateur <<
    Les opérations de décalage ne causent jamais de dépassement de capacité.
    : : :
    On ne peut pas faire boire un âne qui n'a pas soif.

  5. #5
    Expert Confirmé Sénior
    Avatar de smyley
    Inscrit en
    juin 2003
    Messages
    6 270
    Détails du profil
    Informations forums :
    Inscription : juin 2003
    Messages : 6 270
    Points : 7 783
    Points
    7 783

    Par défaut

    J'ai réalisé un test ( désolé, le code est long )
    Propriété "Vérifier..." définie à "True"
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
     
    		readonly static uint[] crc32Table = 
    		{
    			0x00000000, 0x04c11db7, 0x09823b6e, 0x0d4326d9,
    			0x130476dc, 0x17c56b6b, 0x1a864db2, 0x1e475005,
    			0x2608edb8, 0x22c9f00f, 0x2f8ad6d6, 0x2b4bcb61,
    			0x350c9b64, 0x31cd86d3, 0x3c8ea00a, 0x384fbdbd,
    			0x4c11db70, 0x48d0c6c7, 0x4593e01e, 0x4152fda9,
    			0x5f15adac, 0x5bd4b01b, 0x569796c2, 0x52568b75,
    			0x6a1936c8, 0x6ed82b7f, 0x639b0da6, 0x675a1011,
    			0x791d4014, 0x7ddc5da3, 0x709f7b7a, 0x745e66cd,
    			0x9823b6e0, 0x9ce2ab57, 0x91a18d8e, 0x95609039,
    			0x8b27c03c, 0x8fe6dd8b, 0x82a5fb52, 0x8664e6e5,
    			0xbe2b5b58, 0xbaea46ef, 0xb7a96036, 0xb3687d81,
    			0xad2f2d84, 0xa9ee3033, 0xa4ad16ea, 0xa06c0b5d,
    			0xd4326d90, 0xd0f37027, 0xddb056fe, 0xd9714b49,
    			0xc7361b4c, 0xc3f706fb, 0xceb42022, 0xca753d95,
    			0xf23a8028, 0xf6fb9d9f, 0xfbb8bb46, 0xff79a6f1,
    			0xe13ef6f4, 0xe5ffeb43, 0xe8bccd9a, 0xec7dd02d,
    			0x34867077, 0x30476dc0, 0x3d044b19, 0x39c556ae,
    			0x278206ab, 0x23431b1c, 0x2e003dc5, 0x2ac12072,
    			0x128e9dcf, 0x164f8078, 0x1b0ca6a1, 0x1fcdbb16,
    			0x018aeb13, 0x054bf6a4, 0x0808d07d, 0x0cc9cdca,
    			0x7897ab07, 0x7c56b6b0, 0x71159069, 0x75d48dde,
    			0x6b93dddb, 0x6f52c06c, 0x6211e6b5, 0x66d0fb02,
    			0x5e9f46bf, 0x5a5e5b08, 0x571d7dd1, 0x53dc6066,
    			0x4d9b3063, 0x495a2dd4, 0x44190b0d, 0x40d816ba,
    			0xaca5c697, 0xa864db20, 0xa527fdf9, 0xa1e6e04e,
    			0xbfa1b04b, 0xbb60adfc, 0xb6238b25, 0xb2e29692,
    			0x8aad2b2f, 0x8e6c3698, 0x832f1041, 0x87ee0df6,
    			0x99a95df3, 0x9d684044, 0x902b669d, 0x94ea7b2a,
    			0xe0b41de7, 0xe4750050, 0xe9362689, 0xedf73b3e,
    			0xf3b06b3b, 0xf771768c, 0xfa325055, 0xfef34de2,
    			0xc6bcf05f, 0xc27dede8, 0xcf3ecb31, 0xcbffd686,
    			0xd5b88683, 0xd1799b34, 0xdc3abded, 0xd8fba05a,
    			0x690ce0ee, 0x6dcdfd59, 0x608edb80, 0x644fc637,
    			0x7a089632, 0x7ec98b85, 0x738aad5c, 0x774bb0eb,
    			0x4f040d56, 0x4bc510e1, 0x46863638, 0x42472b8f,
    			0x5c007b8a, 0x58c1663d, 0x558240e4, 0x51435d53,
    			0x251d3b9e, 0x21dc2629, 0x2c9f00f0, 0x285e1d47,
    			0x36194d42, 0x32d850f5, 0x3f9b762c, 0x3b5a6b9b,
    			0x0315d626, 0x07d4cb91, 0x0a97ed48, 0x0e56f0ff,
    			0x1011a0fa, 0x14d0bd4d, 0x19939b94, 0x1d528623,
    			0xf12f560e, 0xf5ee4bb9, 0xf8ad6d60, 0xfc6c70d7,
    			0xe22b20d2, 0xe6ea3d65, 0xeba91bbc, 0xef68060b,
    			0xd727bbb6, 0xd3e6a601, 0xdea580d8, 0xda649d6f,
    			0xc423cd6a, 0xc0e2d0dd, 0xcda1f604, 0xc960ebb3,
    			0xbd3e8d7e, 0xb9ff90c9, 0xb4bcb610, 0xb07daba7,
    			0xae3afba2, 0xaafbe615, 0xa7b8c0cc, 0xa379dd7b,
    			0x9b3660c6, 0x9ff77d71, 0x92b45ba8, 0x9675461f,
    			0x8832161a, 0x8cf30bad, 0x81b02d74, 0x857130c3,
    			0x5d8a9099, 0x594b8d2e, 0x5408abf7, 0x50c9b640,
    			0x4e8ee645, 0x4a4ffbf2, 0x470cdd2b, 0x43cdc09c,
    			0x7b827d21, 0x7f436096, 0x7200464f, 0x76c15bf8,
    			0x68860bfd, 0x6c47164a, 0x61043093, 0x65c52d24,
    			0x119b4be9, 0x155a565e, 0x18197087, 0x1cd86d30,
    			0x029f3d35, 0x065e2082, 0x0b1d065b, 0x0fdc1bec,
    			0x3793a651, 0x3352bbe6, 0x3e119d3f, 0x3ad08088,
    			0x2497d08d, 0x2056cd3a, 0x2d15ebe3, 0x29d4f654,
    			0xc5a92679, 0xc1683bce, 0xcc2b1d17, 0xc8ea00a0,
    			0xd6ad50a5, 0xd26c4d12, 0xdf2f6bcb, 0xdbee767c,
    			0xe3a1cbc1, 0xe760d676, 0xea23f0af, 0xeee2ed18,
    			0xf0a5bd1d, 0xf464a0aa, 0xf9278673, 0xfde69bc4,
    			0x89b8fd09, 0x8d79e0be, 0x803ac667, 0x84fbdbd0,
    			0x9abc8bd5, 0x9e7d9662, 0x933eb0bb, 0x97ffad0c,
    			0xafb010b1, 0xab710d06, 0xa6322bdf, 0xa2f33668,
    			0xbcb4666d, 0xb8757bda, 0xb5365d03, 0xb1f740b4
    		};
     
    		private void button1_Click(object sender, System.EventArgs e)
    		{
    			System.Random rd = new Random();
    			byte[] buf = new byte[500];
    			rd.NextBytes(buf);
    			int cr = -1;
    			int l;
    			int tmp;
    			for(int i = 0;i<500;i++)
    			{
    				l = (cr >> 24) ^ buf[i];
    				if(l < 0)
    					l = 256 + l;
     
    				tmp = l << 8;
    				cr = (int)(tmp ^ crc32Table[l]);
    			}
    		}
    Erreur sur la ligne :
    Code :
    1
    2
     
    cr = (int)(tmp ^ crc32Table[l]);

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    juillet 2002
    Messages
    487
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : juillet 2002
    Messages : 487
    Points : 608
    Points
    608

    Par défaut

    Ok mais tu ne donnes toujours pas l'instruction précise qui génère l'erreur.
    Le pb vient du cast, du xor ...?
    Voir ma première question.
    On ne peut pas faire boire un âne qui n'a pas soif.

  7. #7
    Expert Confirmé Sénior
    Avatar de smyley
    Inscrit en
    juin 2003
    Messages
    6 270
    Détails du profil
    Informations forums :
    Inscription : juin 2003
    Messages : 6 270
    Points : 7 783
    Points
    7 783

    Par défaut

    dsl j'avais oublié de décomposer cette ligne
    Code :
    1
    2
    3
    4
    5
    6
     
    long longtmp;
    ...
    tmp = l << 8;
    longtmp = tmp ^ crc32Table[l];
    cr = (int)longtmp;
    Erreur sur le cast

    En fait, si je garde que la valeur "long" sans faire un cast vers int, il n'y a aucune érreur ( et j'ai bien mon CRC ) mais alors pourquoi dans la #zipLib font-il le cast ????

  8. #8
    Membre chevronné
    Profil pro
    Inscrit en
    juillet 2002
    Messages
    487
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : juillet 2002
    Messages : 487
    Points : 608
    Points
    608

    Par défaut

    Voilà le problème: crc32Table[l] est un UInt donc un cast en Int ne peut se faire sans perte.
    Il me paraît préférable d'utiliser des UInt d'un bout à l'autre pour être plus cohérent. Voir s'il n'y a pas d'effets de bord ...
    On ne peut pas faire boire un âne qui n'a pas soif.

  9. #9
    doccpu
    Invité(e)

    Par défaut

    +100 pour NicolasG

  10. #10
    Expert Confirmé Sénior
    Avatar de smyley
    Inscrit en
    juin 2003
    Messages
    6 270
    Détails du profil
    Informations forums :
    Inscription : juin 2003
    Messages : 6 270
    Points : 7 783
    Points
    7 783

    Par défaut

    ça marche avec des uint,
    je m'en vais de ce pas corriger le fichier StrangeCRC.cs de la #ziplib que j'utilise

  11. #11

    Inscrit en
    juillet 2009
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : juillet 2009
    Messages : 3
    Points : -1
    Points
    -1

    Par défaut

    Sinon la solution est dans C#

    Regarde le mot clé unchecked moi je l'ai fait et plus de soucis.

  12. #12
    Expert Confirmé Sénior Avatar de DonQuiche
    Inscrit en
    septembre 2010
    Messages
    2 177
    Détails du profil
    Informations forums :
    Inscription : septembre 2010
    Messages : 2 177
    Points : 4 704
    Points
    4 704

    Par défaut

    C'est sûr : si vous désactivez les vérifications arithmétiques aucune exception ne vous sera renvoyée à la tronche. Mais ça ne voudra pas dire pour autant que le résultat sera correct ! Cela peut très bien traduire une erreur qui va corrompre le fichier.

    Deux solutions :
    * Examiner soigneusement le code source de la biblio pour comprendre pourquoi il y a dépassement de capacité et si c'est un comportement normal ou non. Puis en déduire si c'est un bug de la biblio (et soumettre un patch) ou une erreur dans la façon dont elle est utilisée (et corriger).
    * Contacter l'auteur en espérant qu'il accepte de se pencher sur le problème.

    EDIT: Cette histoire m'a fait penser à ce billet de Raymond Chen. N'y voyez rien d'agressif, simplement les deux situations sont parfaitement analogues et Raymond Chen a un certain talent pour raconter ce genre d'histoire.
    - Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?
    - Apparently everyone.

  13. #13
    Invité de passage
    Homme Profil pro
    Directeur commercial
    Inscrit en
    octobre 2014
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Directeur commercial
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : octobre 2014
    Messages : 1
    Points : 1
    Points
    1

    Par défaut

    Bonjour,
    Je me permet de relancer ce sujet car j ai besoin de votre aide!
    voila ce qui m arrive, j ai un logiciel EBP.
    il ce lance bien mais des que j ouvre la base de donne:
    'opération arithmétique a provoqué un dépassement de capacité'
    et moi aussi ça dépasse mes capacité
    814908Capture.png

    Code:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
     
    ===================17/10/2014 09:52:01===================
    C:\Program Files\EBP\Invoicing6.1FRFR20\EBP.Invoicing.Application.exe
    System.OverflowException : L'opération arithmétique a provoqué un dépassement de capacité.
       à System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection)
       à System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection)
       à System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection)
       à System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions)
       à System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection)
       à System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection)
       à System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection)
       à System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection)
       à System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions)
       à System.Data.SqlClient.SqlConnection.TryOpenInner(TaskCompletionSource`1 retry)
       à System.Data.SqlClient.SqlConnection.TryOpenInner(TaskCompletionSource`1 retry)
       à System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry)
       à System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry)
       à System.Data.SqlClient.SqlConnection.Open()
       à System.Data.SqlClient.SqlConnection.Open()
       à EBP.Framework.Data.SqlServer.SqlServerProvider.CreateOpenedConnection(String databaseName)
       à EBP.Framework.Data.SqlServer.SqlServerProvider.CreateOpenedConnection(String databaseName)
       à EBP.Framework.Data.SqlServer.SqlServerProvider.DoGetNotFilteredDatabases()
       à EBP.Framework.Data.SqlServer.SqlServerProvider.ServerExists()
       à EBP.Framework.Data.Database.ProviderBase.GetNotFilteredDatabases()
       à EBP.Framework.Data.Database.Database.ServerExists(IDatabaseShortcut databaseShortcut)
       à EBP.Framework.Data.Database.ProviderBase.GetDatabases(ApplicationInfo applicationInfo, Boolean withCompatibleApplications, Nullable`1 max, Func`3 filter)
       à EBP.Framework.BusinessLogic.Services.Database.DatabaseService.CheckDemoDatabaseShortcut(IShortcut& demoShortcut)
       à EBP.Framework.Data.Database.Database.GetDatabases(IDatabaseShortcut databaseShortcut, ApplicationInfo applicationInfo, Boolean withCompatibleApplications, Nullable`1 max)
       à EBP.Framework.Data.Database.Database.DoCheckDatabaseCount(Object state)
       à EBP.Framework.BusinessLogic.Services.Database.DatabaseService.OpenDatabases(IShortcut shortcut, Boolean addToMru, String userId, String userEncryptedPassword, Boolean forceLogin)
       à System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
       à EBP.Framework.BusinessLogic.Services.Database.DatabaseService.OpenDatabases(IShortcut shortcut, Boolean addToMru)
       à EBP.Framework.Windows.Services.Database.VisualDatabaseService.Open()
       à EBP.Framework.Windows.Actions.ActionBase.Execute()
       à System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
       à System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem()
       à System.Threading.ThreadPoolWorkQueue.Dispatch()
       à DevExpress.XtraBars.BarItemLink.OnLinkClick()
       à DevExpress.XtraBars.BarButtonItemLink.OnLinkAction(BarLinkAction action, Object actionArgs)
       à DevExpress.XtraBars.ViewInfo.BarSelectionInfo.UnPressLink(BarItemLink link)
       à DevExpress.XtraBars.Controls.CustomLinksControl.OnMouseUp(MouseEventArgs e)
       à System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
       à System.Windows.Forms.Control.WndProc(Message& m)
       à DevExpress.XtraBars.Controls.CustomControl.WndProc(Message& msg)
       à System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
       à System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
       à System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
       à System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
       à System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
       à EBP.Framework.Windows.Host.WinHost.OnRunned()
       à EBP.Framework.Common.Host.HostBase.Run(IHostedApplication mainApplication, String[] args)
       à EBP.Invoicing.Application.Program.Main(String[] args)
    voici la configuration de mon Pc:

    Système d'exploitation
    Windows 8.1 Professionnel ‎(X64)‎

    Processeur
    Intel Core i7 3930K Cadencé à 3.20 GHz

    Carte mère
    ASUSTeK COMPUTER INC. RAMPAGE IV EXTREME Rev 1.xx

    Mémoire
    8 Go de mémoire totale de type DDR3


    Merci pour votre aide!

+ Répondre à la discussion
Cette discussion est résolue.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •