aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorUbitUmarov2016-08-22 05:47:19 +0100
committerUbitUmarov2016-08-22 05:47:19 +0100
commit52a80f17423afc0049117c812cacab159f544639 (patch)
tree23f0f3fcbf53b66b311fde7f4787b6cf2bf20420
parentworkaround potencial memory leak (diff)
downloadopensim-SC_OLD-52a80f17423afc0049117c812cacab159f544639.zip
opensim-SC_OLD-52a80f17423afc0049117c812cacab159f544639.tar.gz
opensim-SC_OLD-52a80f17423afc0049117c812cacab159f544639.tar.bz2
opensim-SC_OLD-52a80f17423afc0049117c812cacab159f544639.tar.xz
workaround potencial memory leak
-rw-r--r--OpenSim/Capabilities/Handlers/GetTexture/GetTextureHandler.cs35
-rw-r--r--OpenSim/Capabilities/Handlers/GetTexture/GetTextureRobustHandler.cs38
-rw-r--r--OpenSim/Services/Connectors/Hypergrid/GatekeeperServiceConnector.cs6
-rw-r--r--ThirdParty/SmartThreadPool/SmartThreadPool.cs3
4 files changed, 46 insertions, 36 deletions
diff --git a/OpenSim/Capabilities/Handlers/GetTexture/GetTextureHandler.cs b/OpenSim/Capabilities/Handlers/GetTexture/GetTextureHandler.cs
index ac99692..8215124 100644
--- a/OpenSim/Capabilities/Handlers/GetTexture/GetTextureHandler.cs
+++ b/OpenSim/Capabilities/Handlers/GetTexture/GetTextureHandler.cs
@@ -354,9 +354,9 @@ namespace OpenSim.Capabilities.Handlers
354 byte[] data = new byte[0]; 354 byte[] data = new byte[0];
355 355
356 MemoryStream imgstream = new MemoryStream(); 356 MemoryStream imgstream = new MemoryStream();
357 Bitmap mTexture = new Bitmap(1, 1); 357 Bitmap mTexture = null;
358 ManagedImage managedImage; 358 ManagedImage managedImage = null;
359 Image image = (Image)mTexture; 359 Image image = null;
360 360
361 try 361 try
362 { 362 {
@@ -365,25 +365,26 @@ namespace OpenSim.Capabilities.Handlers
365 imgstream = new MemoryStream(); 365 imgstream = new MemoryStream();
366 366
367 // Decode image to System.Drawing.Image 367 // Decode image to System.Drawing.Image
368 if (OpenJPEG.DecodeToImage(texture.Data, out managedImage, out image)) 368 if (OpenJPEG.DecodeToImage(texture.Data, out managedImage, out image) && image != null)
369 { 369 {
370 // Save to bitmap 370 // Save to bitmap
371 mTexture = new Bitmap(image); 371 mTexture = new Bitmap(image);
372 372
373 EncoderParameters myEncoderParameters = new EncoderParameters(); 373 using(EncoderParameters myEncoderParameters = new EncoderParameters())
374 myEncoderParameters.Param[0] = new EncoderParameter(Encoder.Quality, 95L);
375
376 // Save bitmap to stream
377 ImageCodecInfo codec = GetEncoderInfo("image/" + format);
378 if (codec != null)
379 { 374 {
380 mTexture.Save(imgstream, codec, myEncoderParameters); 375 myEncoderParameters.Param[0] = new EncoderParameter(Encoder.Quality,95L);
376
377 // Save bitmap to stream
378 ImageCodecInfo codec = GetEncoderInfo("image/" + format);
379 if (codec != null)
380 {
381 mTexture.Save(imgstream, codec, myEncoderParameters);
381 // Write the stream to a byte array for output 382 // Write the stream to a byte array for output
382 data = imgstream.ToArray(); 383 data = imgstream.ToArray();
384 }
385 else
386 m_log.WarnFormat("[GETTEXTURE]: No such codec {0}", format);
383 } 387 }
384 else
385 m_log.WarnFormat("[GETTEXTURE]: No such codec {0}", format);
386
387 } 388 }
388 } 389 }
389 catch (Exception e) 390 catch (Exception e)
@@ -399,7 +400,9 @@ namespace OpenSim.Capabilities.Handlers
399 400
400 if (image != null) 401 if (image != null)
401 image.Dispose(); 402 image.Dispose();
402 403
404 if(managedImage != null)
405 managedImage.Clear();
403 if (imgstream != null) 406 if (imgstream != null)
404 { 407 {
405 imgstream.Close(); 408 imgstream.Close();
diff --git a/OpenSim/Capabilities/Handlers/GetTexture/GetTextureRobustHandler.cs b/OpenSim/Capabilities/Handlers/GetTexture/GetTextureRobustHandler.cs
index f813471..518f74e 100644
--- a/OpenSim/Capabilities/Handlers/GetTexture/GetTextureRobustHandler.cs
+++ b/OpenSim/Capabilities/Handlers/GetTexture/GetTextureRobustHandler.cs
@@ -359,9 +359,9 @@ namespace OpenSim.Capabilities.Handlers
359 byte[] data = new byte[0]; 359 byte[] data = new byte[0];
360 360
361 MemoryStream imgstream = new MemoryStream(); 361 MemoryStream imgstream = new MemoryStream();
362 Bitmap mTexture = new Bitmap(1, 1); 362 Bitmap mTexture = null;
363 ManagedImage managedImage; 363 ManagedImage managedImage = null;
364 Image image = (Image)mTexture; 364 Image image = null;
365 365
366 try 366 try
367 { 367 {
@@ -370,25 +370,26 @@ namespace OpenSim.Capabilities.Handlers
370 imgstream = new MemoryStream(); 370 imgstream = new MemoryStream();
371 371
372 // Decode image to System.Drawing.Image 372 // Decode image to System.Drawing.Image
373 if (OpenJPEG.DecodeToImage(texture.Data, out managedImage, out image)) 373 if (OpenJPEG.DecodeToImage(texture.Data, out managedImage, out image) && image != null)
374 { 374 {
375 // Save to bitmap 375 // Save to bitmap
376 mTexture = new Bitmap(image); 376 mTexture = new Bitmap(image);
377 377
378 EncoderParameters myEncoderParameters = new EncoderParameters(); 378 using(EncoderParameters myEncoderParameters = new EncoderParameters())
379 myEncoderParameters.Param[0] = new EncoderParameter(Encoder.Quality, 95L);
380
381 // Save bitmap to stream
382 ImageCodecInfo codec = GetEncoderInfo("image/" + format);
383 if (codec != null)
384 { 379 {
385 mTexture.Save(imgstream, codec, myEncoderParameters); 380 myEncoderParameters.Param[0] = new EncoderParameter(Encoder.Quality,95L);
386 // Write the stream to a byte array for output
387 data = imgstream.ToArray();
388 }
389 else
390 m_log.WarnFormat("[GETTEXTURE]: No such codec {0}", format);
391 381
382 // Save bitmap to stream
383 ImageCodecInfo codec = GetEncoderInfo("image/" + format);
384 if (codec != null)
385 {
386 mTexture.Save(imgstream, codec, myEncoderParameters);
387 // Write the stream to a byte array for output
388 data = imgstream.ToArray();
389 }
390 else
391 m_log.WarnFormat("[GETTEXTURE]: No such codec {0}", format);
392 }
392 } 393 }
393 } 394 }
394 catch (Exception e) 395 catch (Exception e)
@@ -405,6 +406,9 @@ namespace OpenSim.Capabilities.Handlers
405 if (image != null) 406 if (image != null)
406 image.Dispose(); 407 image.Dispose();
407 408
409 if(managedImage != null)
410 managedImage.Clear();
411
408 if (imgstream != null) 412 if (imgstream != null)
409 { 413 {
410 imgstream.Close(); 414 imgstream.Close();
diff --git a/OpenSim/Services/Connectors/Hypergrid/GatekeeperServiceConnector.cs b/OpenSim/Services/Connectors/Hypergrid/GatekeeperServiceConnector.cs
index 2340998..aad3bd2 100644
--- a/OpenSim/Services/Connectors/Hypergrid/GatekeeperServiceConnector.cs
+++ b/OpenSim/Services/Connectors/Hypergrid/GatekeeperServiceConnector.cs
@@ -159,8 +159,7 @@ namespace OpenSim.Services.Connectors.Hypergrid
159 string filename = string.Empty; 159 string filename = string.Empty;
160 160
161 try 161 try
162 { 162 {
163 WebClient c = new WebClient();
164 //m_log.Debug("JPEG: " + imageURL); 163 //m_log.Debug("JPEG: " + imageURL);
165 string name = regionID.ToString(); 164 string name = regionID.ToString();
166 filename = Path.Combine(storagePath, name + ".jpg"); 165 filename = Path.Combine(storagePath, name + ".jpg");
@@ -168,7 +167,8 @@ namespace OpenSim.Services.Connectors.Hypergrid
168 if (!File.Exists(filename)) 167 if (!File.Exists(filename))
169 { 168 {
170 m_log.DebugFormat("[GATEKEEPER SERVICE CONNECTOR]: downloading..."); 169 m_log.DebugFormat("[GATEKEEPER SERVICE CONNECTOR]: downloading...");
171 c.DownloadFile(imageURL, filename); 170 using(WebClient c = new WebClient())
171 c.DownloadFile(imageURL, filename);
172 } 172 }
173 else 173 else
174 { 174 {
diff --git a/ThirdParty/SmartThreadPool/SmartThreadPool.cs b/ThirdParty/SmartThreadPool/SmartThreadPool.cs
index 8e42732..297e20e 100644
--- a/ThirdParty/SmartThreadPool/SmartThreadPool.cs
+++ b/ThirdParty/SmartThreadPool/SmartThreadPool.cs
@@ -1485,6 +1485,9 @@ namespace Amib.Threading
1485 _isIdleWaitHandle = null; 1485 _isIdleWaitHandle = null;
1486 } 1486 }
1487 1487
1488 if (_stpStartInfo.EnableLocalPerformanceCounters)
1489 _localPCs.Dispose();
1490
1488 _isDisposed = true; 1491 _isDisposed = true;
1489 } 1492 }
1490 } 1493 }