[ros-dev] Status Meeting (September 2016)

2016-09-28 Thread Aleksey Bragin

Hello,
Let me invite you to the monthly status meeting taking place this 
Thursday, 29th of September, 19:00 UTC.


IRC service will only be started shortly before the meeting. Your 
participation passwords and server address will be emailed to you 
shortly before the meeting starts, and they are going to be different 
once again as they are not stored in any database. Hopefully it's not 
much of inconvenience.


Or we'll do it in #reactos-meeting on Freenode, depeonds on our admins.

Please send agenda proposals to me before the meeting so we don't waste 
time trying to setup the agenda directly during the meeting.


Regards,
Aleksey Bragin
___
Ros-dev mailing list
Ros-dev@reactos.org
http://www.reactos.org/mailman/listinfo/ros-dev

Re: [ros-dev] [ros-diffs] [dchapyshev] 72835: [NTOS:FSRTL] Rework FsRtlIsNameInExpressionPrivate for correct parsing some expressions * Fixes 1 test for kmtest:FsRtlExpression and 15 tests for kernel3

2016-09-28 Thread Pierre Schweitzer
Don't forget to apply the changes (not reviewed, sorry, no time) to
FsRtlIsDbcsInExpression.

Le 28/09/2016 à 01:00, dchapys...@svn.reactos.org a écrit :
> Author: dchapyshev
> Date: Tue Sep 27 23:00:20 2016
> New Revision: 72835
> 
> URL: http://svn.reactos.org/svn/reactos?rev=72835=rev
> Log:
> [NTOS:FSRTL] Rework FsRtlIsNameInExpressionPrivate for correct parsing some 
> expressions
> 
> * Fixes 1 test for kmtest:FsRtlExpression and 15 tests for kernel32:file
> 
> Modified:
> trunk/reactos/ntoskrnl/fsrtl/name.c
> 
> Modified: trunk/reactos/ntoskrnl/fsrtl/name.c
> URL: 
> http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/fsrtl/name.c?rev=72835=72834=72835=diff
> ==
> --- trunk/reactos/ntoskrnl/fsrtl/name.c   [iso-8859-1] (original)
> +++ trunk/reactos/ntoskrnl/fsrtl/name.c   [iso-8859-1] Tue Sep 27 
> 23:00:20 2016
> @@ -23,13 +23,14 @@
> IN BOOLEAN IgnoreCase,
> IN PWCHAR UpcaseTable OPTIONAL)
>  {
> -SHORT StarFound = -1, DosStarFound = -1;
> -USHORT BackTrackingBuffer[5], DosBackTrackingBuffer[5];
> -PUSHORT BackTracking = BackTrackingBuffer, DosBackTracking = 
> DosBackTrackingBuffer;
> -SHORT BackTrackingSize = RTL_NUMBER_OF(BackTrackingBuffer);
> -SHORT DosBackTrackingSize = RTL_NUMBER_OF(DosBackTrackingBuffer);
> +USHORT Offset, Position, BackTrackingPosition, OldBackTrackingPosition;
> +USHORT BackTrackingBuffer[16], OldBackTrackingBuffer[16] = {0};
> +PUSHORT BackTrackingSwap, BackTracking = BackTrackingBuffer, 
> OldBackTracking = OldBackTrackingBuffer;
>  UNICODE_STRING IntExpression;
> -USHORT ExpressionPosition = 0, NamePosition = 0, MatchingChars, LastDot;
> +USHORT ExpressionPosition = 0, NamePosition = 0, MatchingChars = 1;
> +BOOLEAN EndOfName = FALSE;
> +BOOLEAN Result = FALSE;
> +BOOLEAN DontSkipDot;
>  WCHAR CompareChar;
>  PAGED_CODE();
>  
> @@ -37,7 +38,7 @@
>  if (!Name->Length || !Expression->Length)
>  {
>  /* Return TRUE if both strings are empty, otherwise FALSE */
> -if (Name->Length == 0 && Expression->Length == 0)
> +if (!Name->Length && !Expression->Length)
>  return TRUE;
>  else
>  return FALSE;
> @@ -103,193 +104,144 @@
>  }
>  }
>  
> -while ((NamePosition < Name->Length / sizeof(WCHAR)) &&
> -   (ExpressionPosition < Expression->Length / sizeof(WCHAR)))
> -{
> -/* Basic check to test if chars are equal */
> -CompareChar = IgnoreCase ? UpcaseTable[Name->Buffer[NamePosition]] :
> -   Name->Buffer[NamePosition];
> -if (Expression->Buffer[ExpressionPosition] == CompareChar)
> -{
> -NamePosition++;
> -ExpressionPosition++;
> -}
> -/* Check cases that eat one char */
> -else if (Expression->Buffer[ExpressionPosition] == L'?')
> -{
> -NamePosition++;
> -ExpressionPosition++;
> -}
> -/* Test star */
> -else if (Expression->Buffer[ExpressionPosition] == L'*')
> -{
> -/* Skip contigous stars */
> -while ((ExpressionPosition + 1 < (USHORT)(Expression->Length / 
> sizeof(WCHAR))) &&
> -   (Expression->Buffer[ExpressionPosition + 1] == L'*'))
> -{
> -ExpressionPosition++;
> -}
> -
> -/* Save star position */
> -StarFound++;
> -if (StarFound >= BackTrackingSize)
> -{
> -ASSERT(BackTracking == BackTrackingBuffer);
> -
> -BackTrackingSize = Expression->Length / sizeof(WCHAR);
> -BackTracking = ExAllocatePoolWithTag(PagedPool | 
> POOL_RAISE_IF_ALLOCATION_FAILURE,
> - BackTrackingSize * 
> sizeof(USHORT),
> - 'nrSF');
> -RtlCopyMemory(BackTracking, BackTrackingBuffer, 
> sizeof(BackTrackingBuffer));
> -
> -}
> -BackTracking[StarFound] = ExpressionPosition++;
> -
> -/* If star is at the end, then eat all rest and leave */
> -if (ExpressionPosition == Expression->Length / sizeof(WCHAR))
> -{
> -NamePosition = Name->Length / sizeof(WCHAR);
> +/* Name parsing loop */
> +for (; !EndOfName; MatchingChars = BackTrackingPosition, NamePosition++)
> +{
> +/* Reset positions */
> +OldBackTrackingPosition = BackTrackingPosition = 0;
> +
> +if (NamePosition >= Name->Length / sizeof(WCHAR))
> +{
> +EndOfName = TRUE;
> +if (OldBackTracking[MatchingChars - 1] == Expression->Length * 2)
>  break;
> -}
> -
> -/* Allow null matching */
> -