Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / clr / src / BCL / System / UnSafeCharBuffer.cs / 1305376 / UnSafeCharBuffer.cs
// ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== /*============================================================ ** ** Class: UnSafeBuffer ** ** Purpose: A class to detect incorrect usage of UnSafeBuffer ** ** ===========================================================*/ namespace System { using System.Diagnostics; using System.Diagnostics.Contracts; unsafe internal struct UnSafeCharBuffer{ char * m_buffer; int m_totalSize; int m_length; [System.Security.SecurityCritical] // auto-generated public UnSafeCharBuffer( char *buffer, int bufferSize) { Contract.Assert( buffer != null, "buffer pointer can't be null." ); Contract.Assert( bufferSize >= 0, "buffer size can't be negative." ); m_buffer = buffer; m_totalSize = bufferSize; m_length = 0; } [System.Security.SecuritySafeCritical] // auto-generated public void AppendString(string stringToAppend) { if( String.IsNullOrEmpty( stringToAppend ) ) { return; } if ( (m_totalSize - m_length) < stringToAppend.Length ) { throw new IndexOutOfRangeException(); } fixed( char* pointerToString = stringToAppend ) { Buffer.memcpyimpl( (byte *) pointerToString, (byte*) (m_buffer + m_length), stringToAppend.Length * sizeof(char)); } m_length += stringToAppend.Length; Contract.Assert(m_length <= m_totalSize, "Buffer has been overflowed!"); } public int Length { get { return m_length; } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- HttpCachePolicyElement.cs
- Journaling.cs
- StylusPointPropertyInfoDefaults.cs
- LockingPersistenceProvider.cs
- SoapSchemaExporter.cs
- SqlRowUpdatedEvent.cs
- DiscoveryMessageSequence.cs
- SqlMethodAttribute.cs
- SmiTypedGetterSetter.cs
- OracleSqlParser.cs
- SmtpNetworkElement.cs
- DataGridViewTopRowAccessibleObject.cs
- ComplexTypeEmitter.cs
- SchemaNamespaceManager.cs
- DragEvent.cs
- ResourceExpressionBuilder.cs
- EncryptedData.cs
- ItemContainerGenerator.cs
- remotingproxy.cs
- IPGlobalProperties.cs
- SessionStateModule.cs
- Semaphore.cs
- EntityDataSourceContainerNameItem.cs
- CustomAttribute.cs
- Touch.cs
- ObjectItemCollection.cs
- FreeIndexList.cs
- WhereQueryOperator.cs
- ButtonChrome.cs
- TemplateInstanceAttribute.cs
- ExtensionQuery.cs
- DeclarativeCatalogPart.cs
- SoapAttributeAttribute.cs
- IEnumerable.cs
- ExclusiveNamedPipeTransportManager.cs
- DebugView.cs
- DataGridViewTextBoxCell.cs
- BitmapPalette.cs
- XPathBinder.cs
- ParameterBuilder.cs
- GeometryCombineModeValidation.cs
- UpDownBase.cs
- ColorContext.cs
- ControlPaint.cs
- HttpRawResponse.cs
- QueryInterceptorAttribute.cs
- RegionIterator.cs
- Range.cs
- WindowsGraphicsWrapper.cs
- MobileErrorInfo.cs
- BezierSegment.cs
- InputManager.cs
- ControlDesignerState.cs
- AdornerHitTestResult.cs
- Parser.cs
- ButtonBaseAutomationPeer.cs
- SymbolDocumentInfo.cs
- Typeface.cs
- UTF8Encoding.cs
- ObjectStateEntryDbDataRecord.cs
- PerfCounterSection.cs
- XmlElementList.cs
- SortedDictionary.cs
- DBConnectionString.cs
- LinqDataSourceInsertEventArgs.cs
- COM2ExtendedTypeConverter.cs
- HtmlSelect.cs
- InboundActivityHelper.cs
- URI.cs
- DataRow.cs
- BlurEffect.cs
- ModelTypeConverter.cs
- ServiceAuthorizationManager.cs
- ClientRuntimeConfig.cs
- WorkflowApplicationUnhandledExceptionEventArgs.cs
- CurrentChangedEventManager.cs
- ThreadAttributes.cs
- precedingsibling.cs
- LinearGradientBrush.cs
- NativeRecognizer.cs
- TypeElement.cs
- DataExchangeServiceBinder.cs
- OdbcEnvironmentHandle.cs
- SQLDateTime.cs
- DefaultValueConverter.cs
- SizeChangedInfo.cs
- Assembly.cs
- DefaultPropertiesToSend.cs
- DynamicPropertyReader.cs
- PropertyDescriptorComparer.cs
- login.cs
- TableLayout.cs
- XmlSerializationReader.cs
- safex509handles.cs
- Triplet.cs
- Signature.cs
- PathStreamGeometryContext.cs
- CodeCommentStatement.cs
- ChameleonKey.cs
- PageStatePersister.cs